fix(api): reconcile better-auth schema with installed better-auth CLI output

The Task 3 schema drifted from what better-auth@1.6.18's CLI generates: it used
mode:'timestamp' (epoch seconds) instead of 'timestamp_ms', left verification
timestamps nullable, and omitted the default expressions and helper indexes.

Regenerated src/db/schema.ts from `@better-auth/cli generate` (authoritative per
the plan's version-drift rule) and rebuilt migration 0000 from scratch (no data
exists yet). Converted the index callbacks from the CLI's array form to the
object form required by drizzle-orm@0.36.4's types. Adds session_userId_idx,
account_userId_idx, verification_identifier_idx and the unixepoch defaults.

Tests (health, db, auth sign-up/sign-in, /api/me round-trip) all pass; typecheck
clean; db:generate reports no pending changes.
This commit is contained in:
Bas van Rossem
2026-06-17 14:06:16 +02:00
parent bcb305b048
commit 41b65f209c
4 changed files with 153 additions and 60 deletions

View File

@@ -1,7 +1,7 @@
{
"version": "6",
"dialect": "sqlite",
"id": "4b21759d-56d7-435a-a345-205a6cdc017e",
"id": "e8545186-09fa-4515-bca1-891ed8364a07",
"prevId": "00000000-0000-0000-0000-000000000000",
"tables": {
"account": {
@@ -89,7 +89,8 @@
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
"autoincrement": false,
"default": "(cast(unixepoch('subsecond') * 1000 as integer))"
},
"updated_at": {
"name": "updated_at",
@@ -99,7 +100,15 @@
"autoincrement": false
}
},
"indexes": {},
"indexes": {
"account_userId_idx": {
"name": "account_userId_idx",
"columns": [
"user_id"
],
"isUnique": false
}
},
"foreignKeys": {
"account_user_id_user_id_fk": {
"name": "account_user_id_user_id_fk",
@@ -148,7 +157,8 @@
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
"autoincrement": false,
"default": "(cast(unixepoch('subsecond') * 1000 as integer))"
},
"updated_at": {
"name": "updated_at",
@@ -186,6 +196,13 @@
"token"
],
"isUnique": true
},
"session_userId_idx": {
"name": "session_userId_idx",
"columns": [
"user_id"
],
"isUnique": false
}
},
"foreignKeys": {
@@ -251,14 +268,16 @@
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
"autoincrement": false,
"default": "(cast(unixepoch('subsecond') * 1000 as integer))"
},
"updated_at": {
"name": "updated_at",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
"autoincrement": false,
"default": "(cast(unixepoch('subsecond') * 1000 as integer))"
}
},
"indexes": {
@@ -310,18 +329,28 @@
"name": "created_at",
"type": "integer",
"primaryKey": false,
"notNull": false,
"autoincrement": false
"notNull": true,
"autoincrement": false,
"default": "(cast(unixepoch('subsecond') * 1000 as integer))"
},
"updated_at": {
"name": "updated_at",
"type": "integer",
"primaryKey": false,
"notNull": false,
"autoincrement": false
"notNull": true,
"autoincrement": false,
"default": "(cast(unixepoch('subsecond') * 1000 as integer))"
}
},
"indexes": {
"verification_identifier_idx": {
"name": "verification_identifier_idx",
"columns": [
"identifier"
],
"isUnique": false
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {},

View File

@@ -5,8 +5,8 @@
{
"idx": 0,
"version": "6",
"when": 1781696310538,
"tag": "0000_youthful_genesis",
"when": 1781697895207,
"tag": "0000_stiff_captain_britain",
"breakpoints": true
}
]