diff --git a/services/comms/synapse-user-seed-job.yaml b/services/comms/synapse-user-seed-job.yaml index ea0dc49..083f72e 100644 --- a/services/comms/synapse-user-seed-job.yaml +++ b/services/comms/synapse-user-seed-job.yaml @@ -2,7 +2,7 @@ apiVersion: batch/v1 kind: Job metadata: - name: synapse-user-seed-1 + name: synapse-user-seed-2 namespace: comms spec: backoffLimit: 1 @@ -56,14 +56,18 @@ spec: def get_cols(cur): cur.execute( """ - SELECT column_name, is_nullable, column_default + SELECT column_name, is_nullable, column_default, data_type FROM information_schema.columns WHERE table_schema = 'public' AND table_name = 'users' """ ) cols = {} - for name, is_nullable, default in cur.fetchall(): - cols[name] = {"nullable": is_nullable == "YES", "default": default} + for name, is_nullable, default, data_type in cur.fetchall(): + cols[name] = { + "nullable": is_nullable == "YES", + "default": default, + "type": data_type, + } return cols def upsert_user(cur, cols, user_id, password, admin): @@ -73,14 +77,18 @@ spec: "password_hash": bcrypt.hashpw(password.encode(), bcrypt.gensalt()).decode(), "creation_ts": now_ms, } - if "admin" in cols: - values["admin"] = admin - if "deactivated" in cols: - values["deactivated"] = False - if "shadow_banned" in cols: - values["shadow_banned"] = False - if "is_guest" in cols: - values["is_guest"] = False + def add_flag(name, flag): + if name not in cols: + return + if cols[name]["type"] in ("smallint", "integer"): + values[name] = int(flag) + else: + values[name] = bool(flag) + + add_flag("admin", admin) + add_flag("deactivated", False) + add_flag("shadow_banned", False) + add_flag("is_guest", False) columns = list(values.keys()) placeholders = ", ".join(["%s"] * len(columns))