This commit is contained in:
Michael Freno
2025-12-30 09:50:04 -05:00
parent b07ebb05b7
commit 6e31246060
6 changed files with 524 additions and 73 deletions

View File

@@ -9,9 +9,43 @@ export const model: { [key: string]: string } = {
display_name TEXT,
provider TEXT,
image TEXT,
registered_at TEXT NOT NULL DEFAULT (datetime('now'))
registered_at TEXT NOT NULL DEFAULT (datetime('now')),
failed_attempts INTEGER DEFAULT 0,
locked_until TEXT
);
`,
Session: `
CREATE TABLE Session
(
id TEXT PRIMARY KEY,
user_id TEXT NOT NULL,
token_family TEXT NOT NULL,
created_at TEXT NOT NULL DEFAULT (datetime('now')),
expires_at TEXT NOT NULL,
last_used TEXT NOT NULL DEFAULT (datetime('now')),
ip_address TEXT,
user_agent TEXT,
revoked INTEGER DEFAULT 0,
FOREIGN KEY (user_id) REFERENCES User(id) ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS idx_session_user_id ON Session (user_id);
CREATE INDEX IF NOT EXISTS idx_session_expires_at ON Session (expires_at);
`,
PasswordResetToken: `
CREATE TABLE PasswordResetToken
(
id TEXT PRIMARY KEY,
token TEXT NOT NULL UNIQUE,
user_id TEXT NOT NULL,
expires_at TEXT NOT NULL,
used_at TEXT,
created_at TEXT NOT NULL DEFAULT (datetime('now')),
FOREIGN KEY (user_id) REFERENCES User(id) ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS idx_password_reset_token ON PasswordResetToken (token);
CREATE INDEX IF NOT EXISTS idx_password_reset_user_id ON PasswordResetToken (user_id);
CREATE INDEX IF NOT EXISTS idx_password_reset_expires_at ON PasswordResetToken (expires_at);
`,
Post: `
CREATE TABLE Post
(

View File

@@ -13,6 +13,29 @@ export interface User {
db_destroy_date?: string | null;
created_at: string;
updated_at: string;
failed_attempts?: number;
locked_until?: string | null;
}
export interface Session {
id: string;
user_id: string;
token_family: string;
created_at: string;
expires_at: string;
last_used: string;
ip_address?: string | null;
user_agent?: string | null;
revoked: number;
}
export interface PasswordResetToken {
id: string;
token: string;
user_id: string;
expires_at: string;
used_at?: string | null;
created_at: string;
}
export interface Post {