import * as Effect from "effect/Effect";import * as SqlClient from "effect/unstable/sql/SqlClient";/** * This is an intentional alpha cutover: role-bearing credentials and sessions * cannot safely be assigned new capabilities implicitly. */export default Effect.gen(function* () { const sql = yield* SqlClient.SqlClient; yield* sql`DROP TABLE IF EXISTS auth_pairing_links`; yield* sql`DROP TABLE IF EXISTS auth_sessions`; yield* sql` CREATE TABLE auth_pairing_links ( id TEXT PRIMARY KEY, credential TEXT NOT NULL UNIQUE, method TEXT NOT NULL, scopes TEXT NOT NULL, subject TEXT NOT NULL, label TEXT, created_at TEXT NOT NULL, expires_at TEXT NOT NULL, consumed_at TEXT, revoked_at TEXT ) `; yield* sql` CREATE INDEX idx_auth_pairing_links_active ON auth_pairing_links(revoked_at, consumed_at, expires_at) `; yield* sql` CREATE TABLE auth_sessions ( session_id TEXT PRIMARY KEY, subject TEXT NOT NULL, scopes TEXT NOT NULL, method TEXT NOT NULL, client_label TEXT, client_ip_address TEXT, client_user_agent TEXT, client_device_type TEXT NOT NULL DEFAULT 'unknown', client_os TEXT, client_browser TEXT, issued_at TEXT NOT NULL, expires_at TEXT NOT NULL, last_connected_at TEXT, revoked_at TEXT ) `; yield* sql` CREATE INDEX idx_auth_sessions_active ON auth_sessions(revoked_at, expires_at, issued_at) `;});
import * as Effect from "effect/Effect";
import * as SqlClient from "effect/unstable/sql/SqlClient";
/**
* This is an intentional alpha cutover: role-bearing credentials and sessions
* cannot safely be assigned new capabilities implicitly.
*/
export default Effect.gen(function* () {
const sql = yield* SqlClient.SqlClient;
yield* sql`DROP TABLE IF EXISTS auth_pairing_links`;
yield* sql`DROP TABLE IF EXISTS auth_sessions`;
yield* sql`
CREATE TABLE auth_pairing_links (
id TEXT PRIMARY KEY,
credential TEXT NOT NULL UNIQUE,
method TEXT NOT NULL,
scopes TEXT NOT NULL,
subject TEXT NOT NULL,
label TEXT,
created_at TEXT NOT NULL,
expires_at TEXT NOT NULL,
consumed_at TEXT,
revoked_at TEXT
)
`;
yield* sql`
CREATE INDEX idx_auth_pairing_links_active
ON auth_pairing_links(revoked_at, consumed_at, expires_at)
`;
yield* sql`
CREATE TABLE auth_sessions (
session_id TEXT PRIMARY KEY,
subject TEXT NOT NULL,
scopes TEXT NOT NULL,
method TEXT NOT NULL,
client_label TEXT,
client_ip_address TEXT,
client_user_agent TEXT,
client_device_type TEXT NOT NULL DEFAULT 'unknown',
client_os TEXT,
client_browser TEXT,
issued_at TEXT NOT NULL,
expires_at TEXT NOT NULL,
last_connected_at TEXT,
revoked_at TEXT
)
`;
yield* sql`
CREATE INDEX idx_auth_sessions_active
ON auth_sessions(revoked_at, expires_at, issued_at)
`;
});