v2.0: sound library, image upload, DnD, ResourceBrowser, Barotrauma HUD, captain sanity
Some checks failed
Deploy / build-and-deploy (push) Failing after 52s
Some checks failed
Deploy / build-and-deploy (push) Failing after 52s
This commit is contained in:
@@ -59,8 +59,26 @@ sqlite.exec(`
|
||||
);
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS idx_campaign_item_pos ON bingo_items(campaign_id, grid_index);
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS idx_unique_mark ON marks(campaign_id, item_id);
|
||||
CREATE TABLE IF NOT EXISTS sounds (
|
||||
id TEXT PRIMARY KEY,
|
||||
original_name TEXT NOT NULL,
|
||||
stored_filename TEXT NOT NULL UNIQUE,
|
||||
duration REAL NOT NULL DEFAULT 0,
|
||||
uploaded_by TEXT NOT NULL REFERENCES users(id),
|
||||
created_at TEXT NOT NULL
|
||||
);
|
||||
CREATE TABLE IF NOT EXISTS images (
|
||||
id TEXT PRIMARY KEY,
|
||||
original_name TEXT NOT NULL,
|
||||
stored_filename TEXT NOT NULL UNIQUE,
|
||||
mime_type TEXT NOT NULL DEFAULT 'image/png',
|
||||
file_size INTEGER NOT NULL,
|
||||
uploaded_by TEXT NOT NULL REFERENCES users(id),
|
||||
created_at TEXT NOT NULL
|
||||
);
|
||||
`);
|
||||
|
||||
try { sqlite.exec("ALTER TABLE bingo_items ADD COLUMN sound_url TEXT"); } catch {}
|
||||
try { sqlite.exec("ALTER TABLE bingo_items ADD COLUMN image_url TEXT"); } catch {}
|
||||
|
||||
export const db = drizzle(sqlite, { schema });
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { sqliteTable, text, integer, uniqueIndex } from "drizzle-orm/sqlite-core";
|
||||
import { sqliteTable, text, integer, real, uniqueIndex } from "drizzle-orm/sqlite-core";
|
||||
|
||||
export const users = sqliteTable("users", {
|
||||
id: text("id").primaryKey(),
|
||||
@@ -31,12 +31,32 @@ export const bingoItems = sqliteTable("bingo_items", {
|
||||
emoji: text("emoji").notNull().default("💀"),
|
||||
soundCategory: text("sound_category").notNull().default("horn"),
|
||||
soundUrl: text("sound_url"),
|
||||
imageUrl: text("image_url"),
|
||||
gridIndex: integer("grid_index").notNull(),
|
||||
createdAt: text("created_at").notNull(),
|
||||
}, (table) => [
|
||||
uniqueIndex("idx_campaign_item_pos").on(table.campaignId, table.gridIndex),
|
||||
]);
|
||||
|
||||
export const sounds = sqliteTable("sounds", {
|
||||
id: text("id").primaryKey(),
|
||||
originalName: text("original_name").notNull(),
|
||||
storedFilename: text("stored_filename").unique().notNull(),
|
||||
duration: real("duration").notNull().default(0),
|
||||
uploadedBy: text("uploaded_by").notNull().references(() => users.id),
|
||||
createdAt: text("created_at").notNull(),
|
||||
});
|
||||
|
||||
export const images = sqliteTable("images", {
|
||||
id: text("id").primaryKey(),
|
||||
originalName: text("original_name").notNull(),
|
||||
storedFilename: text("stored_filename").unique().notNull(),
|
||||
mimeType: text("mime_type").notNull().default("image/png"),
|
||||
fileSize: integer("file_size").notNull(),
|
||||
uploadedBy: text("uploaded_by").notNull().references(() => users.id),
|
||||
createdAt: text("created_at").notNull(),
|
||||
});
|
||||
|
||||
export const marks = sqliteTable("marks", {
|
||||
id: text("id").primaryKey(),
|
||||
campaignId: text("campaign_id").notNull().references(() => campaigns.id, { onDelete: "cascade" }),
|
||||
|
||||
Reference in New Issue
Block a user