From 3b03b32046745b91403870c85bdd48ecf8766c35 Mon Sep 17 00:00:00 2001 From: SrIzan10 <66965250+SrIzan10@users.noreply.github.com> Date: Sat, 20 Dec 2025 21:21:10 +0000 Subject: [PATCH] feat: move database to postgres --- app/lib/db/index.ts | 5 + app/lib/db/schema.ts | 23 + app/pages/index.vue | 2 +- drizzle.config.ts | 10 + drizzle/0000_pale_maximus.sql | 21 + drizzle/meta/0000_snapshot.json | 157 +++++ drizzle/meta/_journal.json | 13 + package.json | 10 +- pnpm-lock.yaml | 1075 +++++++++++++++++++++++++++++-- server/cron/clean.ts | 44 +- server/routes/ws/signaling.ts | 99 ++- 11 files changed, 1345 insertions(+), 114 deletions(-) create mode 100644 app/lib/db/index.ts create mode 100644 app/lib/db/schema.ts create mode 100644 drizzle.config.ts create mode 100644 drizzle/0000_pale_maximus.sql create mode 100644 drizzle/meta/0000_snapshot.json create mode 100644 drizzle/meta/_journal.json diff --git a/app/lib/db/index.ts b/app/lib/db/index.ts new file mode 100644 index 0000000..f927c89 --- /dev/null +++ b/app/lib/db/index.ts @@ -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 }); + diff --git a/app/lib/db/schema.ts b/app/lib/db/schema.ts new file mode 100644 index 0000000..a6e5cce --- /dev/null +++ b/app/lib/db/schema.ts @@ -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(), +}); diff --git a/app/pages/index.vue b/app/pages/index.vue index cb1703b..a6a0c4e 100644 --- a/app/pages/index.vue +++ b/app/pages/index.vue @@ -133,7 +133,7 @@ watch(codeRef, (newCode) => {
-
+
{{ viewerStore.connectionStatus }}