Files
ditto/src/db/migrations/038_push_subscriptions.ts
2024-10-14 16:02:07 -05:00

28 lines
1.0 KiB
TypeScript

import { Kysely, sql } from 'kysely';
export async function up(db: Kysely<any>): Promise<void> {
await db.schema
.createTable('push_subscriptions')
.addColumn('id', 'bigserial', (c) => c.primaryKey())
.addColumn('pubkey', 'char(64)', (c) => c.notNull())
.addColumn('token_hash', 'bytea', (c) => c.references('auth_tokens.token_hash').onDelete('cascade').notNull())
.addColumn('endpoint', 'text', (c) => c.notNull())
.addColumn('p256dh', 'text', (c) => c.notNull())
.addColumn('auth', 'text', (c) => c.notNull())
.addColumn('data', 'jsonb')
.addColumn('created_at', 'timestamp', (c) => c.notNull().defaultTo(sql`CURRENT_TIMESTAMP`))
.addColumn('updated_at', 'timestamp', (c) => c.notNull().defaultTo(sql`CURRENT_TIMESTAMP`))
.execute();
await db.schema
.createIndex('push_subscriptions_token_hash_idx')
.on('push_subscriptions')
.column('token_hash')
.unique()
.execute();
}
export async function down(db: Kysely<any>): Promise<void> {
await db.schema.dropTable('push_subscriptions').execute();
}