Add unattached_media table, insert one when uploading a file

This commit is contained in:
Alex Gleason
2023-09-09 17:41:30 -05:00
parent c6b20e68f6
commit c88b174d02
5 changed files with 86 additions and 0 deletions

View File

@@ -0,0 +1,34 @@
import { Kysely, sql } from '@/deps.ts';
export async function up(db: Kysely<any>): Promise<void> {
await db.schema
.createTable('unattached_media')
.addColumn('id', 'text', (c) => c.primaryKey())
.addColumn('pukey', 'text', (c) => c.notNull())
.addColumn('cid', 'text', (c) => c.notNull())
.addColumn('data', 'text', (c) => c.notNull())
.addColumn('uploaded_at', 'datetime', (c) => c.notNull().defaultTo(sql`CURRENT_TIMESTAMP`))
.execute();
await db.schema
.createIndex('unattached_media_id')
.on('unattached_media')
.column('id')
.execute();
await db.schema
.createIndex('unattached_media_pukey')
.on('unattached_media')
.column('pukey')
.execute();
await db.schema
.createIndex('unattached_media_cid')
.on('unattached_media')
.column('cid')
.execute();
}
export async function down(db: Kysely<any>): Promise<void> {
await db.schema.dropTable('unattached_media').execute();
}

View File

@@ -0,0 +1,30 @@
import { db } from '@/db.ts';
import { uuid62 } from '@/deps.ts';
interface UnattachedMedia {
id: string;
pukey: string;
cid: string;
data: {
name?: string;
mime?: string;
width?: number;
height?: number;
size?: number;
description?: string;
};
uploaded_at: Date;
}
function insertUnattachedMedia(media: Omit<UnattachedMedia, 'id' | 'uploaded_at'>) {
return db.insertInto('unattached_media')
.values({
id: uuid62.v4(),
uploaded_at: new Date(),
...media,
data: JSON.stringify(media.data),
})
.execute();
}
export { insertUnattachedMedia };