feat(database): increase passwordHash length and add migration snapshot

- Extended `passwordHash` field length in `users` schema from 100 to 255.
- Added migration snapshot for schema updates.
This commit is contained in:
Mathis HERRIOT
2026-01-29 21:42:05 +01:00
parent 30bcfdb436
commit c827c2e58d
7 changed files with 4214 additions and 4 deletions

View File

@@ -0,0 +1,2 @@
ALTER TABLE "users" ADD COLUMN "show_online_status" boolean DEFAULT true NOT NULL;--> statement-breakpoint
ALTER TABLE "users" ADD COLUMN "show_read_receipts" boolean DEFAULT true NOT NULL;

View File

@@ -0,0 +1 @@
ALTER TABLE "users" ALTER COLUMN "password_hash" SET DATA TYPE varchar(255);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -64,6 +64,20 @@
"when": 1769696731978, "when": 1769696731978,
"tag": "0008_bitter_darwin", "tag": "0008_bitter_darwin",
"breakpoints": true "breakpoints": true
},
{
"idx": 9,
"version": "7",
"when": 1769717126917,
"tag": "0009_add_privacy_settings",
"breakpoints": true
},
{
"idx": 10,
"version": "7",
"when": 1769718997591,
"tag": "0010_update_password_hash_length",
"breakpoints": true
} }
] ]
} }

View File

@@ -21,14 +21,19 @@ const getPgpKey = () => process.env.PGP_ENCRYPTION_KEY || "default-pgp-key";
* withAutomaticPgpDecrypt(users.email); * withAutomaticPgpDecrypt(users.email);
* ``` * ```
*/ */
export const pgpEncrypted = customType<{ data: string; driverData: Buffer }>({ export const pgpEncrypted = customType<{
data: string | null;
driverData: Buffer | string | null | SQL;
}>({
dataType() { dataType() {
return "bytea"; return "bytea";
}, },
toDriver(value: string): SQL { toDriver(value: string | null): SQL | null {
if (value === null) return null;
return sql`pgp_sym_encrypt(${value}, ${getPgpKey()})`; return sql`pgp_sym_encrypt(${value}, ${getPgpKey()})`;
}, },
fromDriver(value: Buffer | string): string { fromDriver(value: Buffer | string | null | any): string | null {
if (value === null || value === undefined) return null;
if (typeof value === "string") return value; if (typeof value === "string") return value;
return value.toString(); return value.toString();
}, },

View File

@@ -29,7 +29,7 @@ export const users = pgTable(
displayName: varchar("display_name", { length: 32 }), displayName: varchar("display_name", { length: 32 }),
username: varchar("username", { length: 32 }).notNull().unique(), username: varchar("username", { length: 32 }).notNull().unique(),
passwordHash: varchar("password_hash", { length: 100 }).notNull(), passwordHash: varchar("password_hash", { length: 255 }).notNull(),
avatarUrl: varchar("avatar_url", { length: 512 }), avatarUrl: varchar("avatar_url", { length: 512 }),
bio: varchar("bio", { length: 255 }), bio: varchar("bio", { length: 255 }),