Skip to content
Snippets Groups Projects

Draft: Add created column

Open Bo-Chun Chen requested to merge louistw/rabbitmq_agents:feat-created-column into main
Files
2
 
import re
import csv
import csv
import dataset
import dataset
from datetime import datetime
from datetime import datetime
import rabbit_config as rcfg
import rabbit_config as rcfg
 
def fromisoformat(date_string: str):
 
regex = re.compile(
 
r"(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})\.(\d{1,6})"
 
)
 
mo = re.search(regex, date_string)
 
return datetime(*[int(m) for m in mo.groups()])
 
 
def upgrade():
def upgrade():
db_path = rcfg.db_path
db_path = rcfg.db_path
db_name = "user_reg.db"
db_name = "user_reg.db"
@@ -25,22 +34,22 @@ def upgrade():
@@ -25,22 +34,22 @@ def upgrade():
next(reader)
next(reader)
for row in reader:
for row in reader:
if row[0] in users:
if row[0] in users:
users[row[0]]["created"] = datetime.fromisoformat(row[1][:-3])
users[row[0]]["created"] = fromisoformat(row[1][:-3])
users[row[0]]["origin"] = row[2]
users[row[0]]["created_source"] = row[2]
# Add copy created column from last_update if they are not in csv file
# Add copy created column from last_update if they are not in csv file
for username in users:
for username in users:
if "created" not in users[username]:
if "created" not in users[username]:
users[username]["created"] = datetime.fromisoformat(
users[username]["created"] = fromisoformat(
users[username]["last_update"]
users[username]["last_update"]
)
)
users[username]["origin"] = "last_update"
users[username]["created_source"] = "last_update"
# No need to update this column back to the db
# No need to update this column back to the db
del users[username]["last_update"]
del users[username]["last_update"]
# Create new columns
# Create new columns
table.create_column("created", db.types.datetime)
table.create_column("created", db.types.datetime)
table.create_column("origin", db.types.text)
table.create_column("created_source", db.types.text)
# Update database in chunk
# Update database in chunk
table.update_many(list(users.values()), ["username"], ensure=True)
table.update_many(list(users.values()), ["username"], ensure=True)
Loading