feat: move database to postgres

This commit is contained in:
2025-12-20 21:21:10 +00:00
parent 350f88446e
commit 3b03b32046
11 changed files with 1345 additions and 114 deletions

5
app/lib/db/index.ts Normal file
View File

@@ -0,0 +1,5 @@
import { drizzle } from 'drizzle-orm/neon-http';
import * as schema from './schema';
export const db = drizzle(process.env.DATABASE_URL!, { schema });

23
app/lib/db/schema.ts Normal file
View File

@@ -0,0 +1,23 @@
import { pgTable, text, timestamp, uuid } from 'drizzle-orm/pg-core';
export const peers = pgTable('peers', {
id: text('id').primaryKey(),
lastSeen: timestamp('last_seen').notNull().defaultNow(),
});
export const rooms = pgTable('rooms', {
id: text('id').primaryKey(),
broadcaster: text('broadcaster').notNull().references(() => peers.id, { onDelete: 'cascade' }),
createdAt: timestamp('created_at').notNull().defaultNow(),
});
export const roomViewers = pgTable('room_viewers', {
id: uuid('id').primaryKey().defaultRandom(),
roomId: text('room_id')
.notNull()
.references(() => rooms.id, { onDelete: 'cascade' }),
viewerId: text('viewer_id')
.notNull()
.references(() => peers.id, { onDelete: 'cascade' }),
joinedAt: timestamp('joined_at').notNull().defaultNow(),
});

View File

@@ -133,7 +133,7 @@ watch(codeRef, (newCode) => {
<app-code-input />
<div class="video relative w-full max-w-1/2 aspect-video">
<div v-if="!isConnected" class="absolute inset-0 bg-black flex items-center justify-center z-10">
<div v-if="!isConnected" class="absolute inset-0 bg-black flex items-center justify-center z-10 text-white">
{{ viewerStore.connectionStatus }}
</div>
<video