From dd4191bea6ba936b3a013cd610b5b620fc0a1235 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Pons?= Date: Wed, 12 Nov 2025 17:53:48 +0100 Subject: [PATCH] Beginning campaign UI and WS to get player state. --- app.vue | 12 +- bun.lock | 1 + db.sqlite | Bin 761856 -> 761856 bytes db/schema.ts | 23 +- drizzle/0019_flaky_steel_serpent.sql | 1 + drizzle/0020_daily_echo.sql | 2 + drizzle/0021_familiar_dagger.sql | 14 + drizzle/0022_warm_bushwacker.sql | 16 + drizzle/meta/0019_snapshot.json | 894 ++++++++++++++++++ drizzle/meta/0020_snapshot.json | 893 ++++++++++++++++++ drizzle/meta/0021_snapshot.json | 998 +++++++++++++++++++++ drizzle/meta/0022_snapshot.json | 998 +++++++++++++++++++++ drizzle/meta/_journal.json | 28 + nuxt.config.ts | 1 + pages/campaign/(automatic)/join.client.vue | 0 pages/campaign/[id]/edit.client.vue | 4 +- pages/campaign/[id]/index.client.vue | 80 +- pages/campaign/index.client.vue | 172 +++- server/api/campaign.get.ts | 12 +- server/api/campaign.post.ts | 6 +- server/api/campaign/[id].delete.ts | 1 + server/api/campaign/[id].get.ts | 14 +- server/api/campaign/[id].post.ts | 1 - server/api/campaign/[id]/join.post.ts | 37 - server/api/campaign/[id]/leave.post.ts | 1 + server/middleware/compress.ts | 25 - server/routes/campaign/join/[link].get.ts | 37 + server/routes/ws/campaign/[id].ts | 22 + shared/campaign.util.ts | 13 +- shared/character.util.ts | 14 +- shared/content.util.ts | 5 +- shared/general.util.ts | 32 + 32 files changed, 4225 insertions(+), 132 deletions(-) create mode 100644 drizzle/0019_flaky_steel_serpent.sql create mode 100644 drizzle/0020_daily_echo.sql create mode 100644 drizzle/0021_familiar_dagger.sql create mode 100644 drizzle/0022_warm_bushwacker.sql create mode 100644 drizzle/meta/0019_snapshot.json create mode 100644 drizzle/meta/0020_snapshot.json create mode 100644 drizzle/meta/0021_snapshot.json create mode 100644 drizzle/meta/0022_snapshot.json delete mode 100644 pages/campaign/(automatic)/join.client.vue delete mode 100644 server/api/campaign/[id]/join.post.ts delete mode 100644 server/middleware/compress.ts create mode 100644 server/routes/campaign/join/[link].get.ts create mode 100644 server/routes/ws/campaign/[id].ts diff --git a/app.vue b/app.vue index bb7c8cf..dcafdbb 100644 --- a/app.vue +++ b/app.vue @@ -1,11 +1,13 @@ diff --git a/bun.lock b/bun.lock index 8819c8b..b5847d4 100644 --- a/bun.lock +++ b/bun.lock @@ -1,5 +1,6 @@ { "lockfileVersion": 1, + "configVersion": 0, "workspaces": { "": { "name": "d-any", diff --git a/db.sqlite b/db.sqlite index 84e0994dec46552b83e0d47839113e1b6391a363..263bd75f97c9060a548cc0d6665a066f0bdfd91b 100644 GIT binary patch delta 7102 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 F{4Xr$=V<@{ diff --git a/db/schema.ts b/db/schema.ts index 73496a6..5617aa7 100644 --- a/db/schema.ts +++ b/db/schema.ts @@ -86,7 +86,10 @@ export const campaignTable = table("campaign", { name: text().notNull(), description: text(), owner: int().notNull().references(() => usersTable.id, { onDelete: 'cascade', onUpdate: 'cascade' }), - joinby: text({ enum: [ 'link', 'invite' ] }).default('invite'), + link: text().notNull(), + status: text({ enum: ['PREPARING', 'PLAYING', 'ARCHIVED'] }).default('PREPARING'), + inventory: text({ mode: 'json' }).default('[]'), + money: int().default(0), }); export const campaignMembersTable = table("campaign_members", { id: int().references(() => campaignTable.id, { onDelete: 'cascade', onUpdate: 'cascade' }), @@ -97,6 +100,13 @@ export const campaignCharactersTable = table("campaign_characters", { id: int().references(() => campaignTable.id, { onDelete: 'cascade', onUpdate: 'cascade' }), character: int().references(() => characterTable.id, { onDelete: 'cascade', onUpdate: 'cascade' }), }, (table) => [primaryKey({ columns: [table.id, table.character] })]); +export const campaignLogsTable = table("campaign_logs", { + id: int().references(() => campaignTable.id, { onDelete: 'cascade', onUpdate: 'cascade' }), + from: int().references(() => campaignCharactersTable.character, { onDelete: 'cascade', onUpdate: 'cascade' }), + timestamp: int({ mode: 'timestamp_ms' }).notNull(), + type: text({ enum: ['ITEM', 'CHARACTER', 'PLACE', 'EVENT', 'FIGHT', 'TEXT'] }), + details: text().notNull(), +}, (table) => [primaryKey({ columns: [table.id, table.from, table.timestamp] })]); export const usersRelation = relations(usersTable, ({ one, many }) => ({ data: one(usersDataTable, { fields: [usersTable.id], references: [usersDataTable.id], }), @@ -142,13 +152,18 @@ export const characterChoicesRelation = relations(characterChoicesTable, ({ one export const campaignRelation = relations(campaignTable, ({ one, many }) => ({ members: many(campaignMembersTable), characters: many(campaignCharactersTable), + logs: many(campaignLogsTable), owner: one(usersTable, { fields: [campaignTable.owner], references: [usersTable.id], }), })); export const campaignMembersRelation = relations(campaignMembersTable, ({ one }) => ({ campaign: one(campaignTable, { fields: [campaignMembersTable.id], references: [campaignTable.id], }), member: one(usersTable, { fields: [campaignMembersTable.user], references: [usersTable.id], }) -})) +})); export const campaignCharacterRelation = relations(campaignCharactersTable, ({ one }) => ({ campaign: one(campaignTable, { fields: [campaignCharactersTable.id], references: [campaignTable.id], }), - character: one(characterTable, { fields: [campaignCharactersTable.character], references: [characterTable.id], }) -})) \ No newline at end of file + character: one(characterTable, { fields: [campaignCharactersTable.character], references: [characterTable.id], }), +})); +export const campaignLogsRelation = relations(campaignLogsTable, ({ one }) => ({ + campaign: one(campaignTable, { fields: [campaignLogsTable.id], references: [campaignTable.id], }), + character: one(campaignCharactersTable, { fields: [campaignLogsTable.from], references: [campaignCharactersTable.character], }), +})); \ No newline at end of file diff --git a/drizzle/0019_flaky_steel_serpent.sql b/drizzle/0019_flaky_steel_serpent.sql new file mode 100644 index 0000000..9963d53 --- /dev/null +++ b/drizzle/0019_flaky_steel_serpent.sql @@ -0,0 +1 @@ +ALTER TABLE `campaign` ADD `joinby` text DEFAULT 'invite'; \ No newline at end of file diff --git a/drizzle/0020_daily_echo.sql b/drizzle/0020_daily_echo.sql new file mode 100644 index 0000000..70e988a --- /dev/null +++ b/drizzle/0020_daily_echo.sql @@ -0,0 +1,2 @@ +ALTER TABLE `campaign` ADD `link` text NOT NULL;--> statement-breakpoint +ALTER TABLE `campaign` DROP COLUMN `joinby`; \ No newline at end of file diff --git a/drizzle/0021_familiar_dagger.sql b/drizzle/0021_familiar_dagger.sql new file mode 100644 index 0000000..ef8dc09 --- /dev/null +++ b/drizzle/0021_familiar_dagger.sql @@ -0,0 +1,14 @@ +CREATE TABLE `campaign_logs` ( + `id` integer, + `from` integer, + `timestamp` integer NOT NULL, + `type` text, + `details` text NOT NULL, + PRIMARY KEY(`id`, `from`, `timestamp`), + FOREIGN KEY (`id`) REFERENCES `campaign`(`id`) ON UPDATE cascade ON DELETE cascade, + FOREIGN KEY (`from`) REFERENCES `campaign_characters`(`id`) ON UPDATE cascade ON DELETE cascade +); +--> statement-breakpoint +ALTER TABLE `campaign` ADD `status` text DEFAULT 'PREPARING';--> statement-breakpoint +ALTER TABLE `campaign` ADD `inventory` text DEFAULT '[]';--> statement-breakpoint +ALTER TABLE `campaign` ADD `money` integer DEFAULT 0; \ No newline at end of file diff --git a/drizzle/0022_warm_bushwacker.sql b/drizzle/0022_warm_bushwacker.sql new file mode 100644 index 0000000..5ec54c0 --- /dev/null +++ b/drizzle/0022_warm_bushwacker.sql @@ -0,0 +1,16 @@ +PRAGMA foreign_keys=OFF;--> statement-breakpoint +CREATE TABLE `__new_campaign_logs` ( + `id` integer, + `from` integer, + `timestamp` integer NOT NULL, + `type` text, + `details` text NOT NULL, + PRIMARY KEY(`id`, `from`, `timestamp`), + FOREIGN KEY (`id`) REFERENCES `campaign`(`id`) ON UPDATE cascade ON DELETE cascade, + FOREIGN KEY (`from`) REFERENCES `campaign_characters`(`character`) ON UPDATE cascade ON DELETE cascade +); +--> statement-breakpoint +INSERT INTO `__new_campaign_logs`("id", "from", "timestamp", "type", "details") SELECT "id", "from", "timestamp", "type", "details" FROM `campaign_logs`;--> statement-breakpoint +DROP TABLE `campaign_logs`;--> statement-breakpoint +ALTER TABLE `__new_campaign_logs` RENAME TO `campaign_logs`;--> statement-breakpoint +PRAGMA foreign_keys=ON; \ No newline at end of file diff --git a/drizzle/meta/0019_snapshot.json b/drizzle/meta/0019_snapshot.json new file mode 100644 index 0000000..dd7f81d --- /dev/null +++ b/drizzle/meta/0019_snapshot.json @@ -0,0 +1,894 @@ +{ + "version": "6", + "dialect": "sqlite", + "id": "4dcce951-0911-424a-b0b1-2db5b2f466f9", + "prevId": "42b1cd62-a77f-4fd3-b271-c44a66a56316", + "tables": { + "campaign_characters": { + "name": "campaign_characters", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "character": { + "name": "character", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "campaign_characters_id_campaign_id_fk": { + "name": "campaign_characters_id_campaign_id_fk", + "tableFrom": "campaign_characters", + "tableTo": "campaign", + "columnsFrom": [ + "id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + }, + "campaign_characters_character_character_id_fk": { + "name": "campaign_characters_character_character_id_fk", + "tableFrom": "campaign_characters", + "tableTo": "character", + "columnsFrom": [ + "character" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "campaign_characters_id_character_pk": { + "columns": [ + "id", + "character" + ], + "name": "campaign_characters_id_character_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "campaign_members": { + "name": "campaign_members", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "user": { + "name": "user", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "rights": { + "name": "rights", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "campaign_members_id_campaign_id_fk": { + "name": "campaign_members_id_campaign_id_fk", + "tableFrom": "campaign_members", + "tableTo": "campaign", + "columnsFrom": [ + "id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + }, + "campaign_members_user_users_id_fk": { + "name": "campaign_members_user_users_id_fk", + "tableFrom": "campaign_members", + "tableTo": "users", + "columnsFrom": [ + "user" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "campaign_members_id_user_pk": { + "columns": [ + "id", + "user" + ], + "name": "campaign_members_id_user_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "campaign": { + "name": "campaign", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "owner": { + "name": "owner", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "joinby": { + "name": "joinby", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'invite'" + } + }, + "indexes": {}, + "foreignKeys": { + "campaign_owner_users_id_fk": { + "name": "campaign_owner_users_id_fk", + "tableFrom": "campaign", + "tableTo": "users", + "columnsFrom": [ + "owner" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "character_abilities": { + "name": "character_abilities", + "columns": { + "character": { + "name": "character", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "ability": { + "name": "ability", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "value": { + "name": "value", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "max": { + "name": "max", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": { + "character_abilities_character_character_id_fk": { + "name": "character_abilities_character_character_id_fk", + "tableFrom": "character_abilities", + "tableTo": "character", + "columnsFrom": [ + "character" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "character_abilities_character_ability_pk": { + "columns": [ + "character", + "ability" + ], + "name": "character_abilities_character_ability_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "character_choices": { + "name": "character_choices", + "columns": { + "character": { + "name": "character", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "id": { + "name": "id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "choice": { + "name": "choice", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "character_choices_character_character_id_fk": { + "name": "character_choices_character_character_id_fk", + "tableFrom": "character_choices", + "tableTo": "character", + "columnsFrom": [ + "character" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "character_choices_character_id_choice_pk": { + "columns": [ + "character", + "id", + "choice" + ], + "name": "character_choices_character_id_choice_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "character_leveling": { + "name": "character_leveling", + "columns": { + "character": { + "name": "character", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "level": { + "name": "level", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "choice": { + "name": "choice", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "character_leveling_character_character_id_fk": { + "name": "character_leveling_character_character_id_fk", + "tableFrom": "character_leveling", + "tableTo": "character", + "columnsFrom": [ + "character" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "character_leveling_character_level_pk": { + "columns": [ + "character", + "level" + ], + "name": "character_leveling_character_level_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "character": { + "name": "character", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "owner": { + "name": "owner", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "people": { + "name": "people", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "level": { + "name": "level", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "variables": { + "name": "variables", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'{\"health\": 0,\"mana\": 0,\"spells\": [],\"items\": [],\"exhaustion\": 0,\"sickness\": [],\"poisons\": []}'" + }, + "aspect": { + "name": "aspect", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "public_notes": { + "name": "public_notes", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "private_notes": { + "name": "private_notes", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "visibility": { + "name": "visibility", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'private'" + }, + "thumbnail": { + "name": "thumbnail", + "type": "blob", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "character_owner_users_id_fk": { + "name": "character_owner_users_id_fk", + "tableFrom": "character", + "tableTo": "users", + "columnsFrom": [ + "owner" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "character_training": { + "name": "character_training", + "columns": { + "character": { + "name": "character", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "stat": { + "name": "stat", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "level": { + "name": "level", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "choice": { + "name": "choice", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "character_training_character_character_id_fk": { + "name": "character_training_character_character_id_fk", + "tableFrom": "character_training", + "tableTo": "character", + "columnsFrom": [ + "character" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "character_training_character_stat_level_pk": { + "columns": [ + "character", + "stat", + "level" + ], + "name": "character_training_character_stat_level_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "email_validation": { + "name": "email_validation", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "timestamp": { + "name": "timestamp", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "project_content": { + "name": "project_content", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "content": { + "name": "content", + "type": "blob", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "project_files": { + "name": "project_files", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "owner": { + "name": "owner", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "navigable": { + "name": "navigable", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": true + }, + "private": { + "name": "private", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "timestamp": { + "name": "timestamp", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "project_files_path_unique": { + "name": "project_files_path_unique", + "columns": [ + "path" + ], + "isUnique": true + } + }, + "foreignKeys": { + "project_files_owner_users_id_fk": { + "name": "project_files_owner_users_id_fk", + "tableFrom": "project_files", + "tableTo": "users", + "columnsFrom": [ + "owner" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "user_permissions": { + "name": "user_permissions", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "user_permissions_id_users_id_fk": { + "name": "user_permissions_id_users_id_fk", + "tableFrom": "user_permissions", + "tableTo": "users", + "columnsFrom": [ + "id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "user_permissions_id_permission_pk": { + "columns": [ + "id", + "permission" + ], + "name": "user_permissions_id_permission_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "user_sessions": { + "name": "user_sessions", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "timestamp": { + "name": "timestamp", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "user_sessions_user_id_users_id_fk": { + "name": "user_sessions_user_id_users_id_fk", + "tableFrom": "user_sessions", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "user_sessions_id_user_id_pk": { + "columns": [ + "id", + "user_id" + ], + "name": "user_sessions_id_user_id_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "users_data": { + "name": "users_data", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "signin": { + "name": "signin", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "lastTimestamp": { + "name": "lastTimestamp", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "users_data_id_users_id_fk": { + "name": "users_data_id_users_id_fk", + "tableFrom": "users_data", + "tableTo": "users", + "columnsFrom": [ + "id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "users": { + "name": "users", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "state": { + "name": "state", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": { + "users_username_unique": { + "name": "users_username_unique", + "columns": [ + "username" + ], + "isUnique": true + }, + "users_email_unique": { + "name": "users_email_unique", + "columns": [ + "email" + ], + "isUnique": true + }, + "users_hash_unique": { + "name": "users_hash_unique", + "columns": [ + "hash" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} + } +} \ No newline at end of file diff --git a/drizzle/meta/0020_snapshot.json b/drizzle/meta/0020_snapshot.json new file mode 100644 index 0000000..d24dd7a --- /dev/null +++ b/drizzle/meta/0020_snapshot.json @@ -0,0 +1,893 @@ +{ + "version": "6", + "dialect": "sqlite", + "id": "606c7320-97b9-4a5b-87ad-2f83093d6b55", + "prevId": "4dcce951-0911-424a-b0b1-2db5b2f466f9", + "tables": { + "campaign_characters": { + "name": "campaign_characters", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "character": { + "name": "character", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "campaign_characters_id_campaign_id_fk": { + "name": "campaign_characters_id_campaign_id_fk", + "tableFrom": "campaign_characters", + "tableTo": "campaign", + "columnsFrom": [ + "id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + }, + "campaign_characters_character_character_id_fk": { + "name": "campaign_characters_character_character_id_fk", + "tableFrom": "campaign_characters", + "tableTo": "character", + "columnsFrom": [ + "character" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "campaign_characters_id_character_pk": { + "columns": [ + "id", + "character" + ], + "name": "campaign_characters_id_character_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "campaign_members": { + "name": "campaign_members", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "user": { + "name": "user", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "rights": { + "name": "rights", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "campaign_members_id_campaign_id_fk": { + "name": "campaign_members_id_campaign_id_fk", + "tableFrom": "campaign_members", + "tableTo": "campaign", + "columnsFrom": [ + "id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + }, + "campaign_members_user_users_id_fk": { + "name": "campaign_members_user_users_id_fk", + "tableFrom": "campaign_members", + "tableTo": "users", + "columnsFrom": [ + "user" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "campaign_members_id_user_pk": { + "columns": [ + "id", + "user" + ], + "name": "campaign_members_id_user_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "campaign": { + "name": "campaign", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "owner": { + "name": "owner", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "link": { + "name": "link", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "campaign_owner_users_id_fk": { + "name": "campaign_owner_users_id_fk", + "tableFrom": "campaign", + "tableTo": "users", + "columnsFrom": [ + "owner" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "character_abilities": { + "name": "character_abilities", + "columns": { + "character": { + "name": "character", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "ability": { + "name": "ability", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "value": { + "name": "value", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "max": { + "name": "max", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": { + "character_abilities_character_character_id_fk": { + "name": "character_abilities_character_character_id_fk", + "tableFrom": "character_abilities", + "tableTo": "character", + "columnsFrom": [ + "character" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "character_abilities_character_ability_pk": { + "columns": [ + "character", + "ability" + ], + "name": "character_abilities_character_ability_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "character_choices": { + "name": "character_choices", + "columns": { + "character": { + "name": "character", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "id": { + "name": "id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "choice": { + "name": "choice", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "character_choices_character_character_id_fk": { + "name": "character_choices_character_character_id_fk", + "tableFrom": "character_choices", + "tableTo": "character", + "columnsFrom": [ + "character" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "character_choices_character_id_choice_pk": { + "columns": [ + "character", + "id", + "choice" + ], + "name": "character_choices_character_id_choice_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "character_leveling": { + "name": "character_leveling", + "columns": { + "character": { + "name": "character", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "level": { + "name": "level", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "choice": { + "name": "choice", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "character_leveling_character_character_id_fk": { + "name": "character_leveling_character_character_id_fk", + "tableFrom": "character_leveling", + "tableTo": "character", + "columnsFrom": [ + "character" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "character_leveling_character_level_pk": { + "columns": [ + "character", + "level" + ], + "name": "character_leveling_character_level_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "character": { + "name": "character", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "owner": { + "name": "owner", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "people": { + "name": "people", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "level": { + "name": "level", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "variables": { + "name": "variables", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'{\"health\": 0,\"mana\": 0,\"spells\": [],\"items\": [],\"exhaustion\": 0,\"sickness\": [],\"poisons\": []}'" + }, + "aspect": { + "name": "aspect", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "public_notes": { + "name": "public_notes", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "private_notes": { + "name": "private_notes", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "visibility": { + "name": "visibility", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'private'" + }, + "thumbnail": { + "name": "thumbnail", + "type": "blob", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "character_owner_users_id_fk": { + "name": "character_owner_users_id_fk", + "tableFrom": "character", + "tableTo": "users", + "columnsFrom": [ + "owner" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "character_training": { + "name": "character_training", + "columns": { + "character": { + "name": "character", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "stat": { + "name": "stat", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "level": { + "name": "level", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "choice": { + "name": "choice", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "character_training_character_character_id_fk": { + "name": "character_training_character_character_id_fk", + "tableFrom": "character_training", + "tableTo": "character", + "columnsFrom": [ + "character" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "character_training_character_stat_level_pk": { + "columns": [ + "character", + "stat", + "level" + ], + "name": "character_training_character_stat_level_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "email_validation": { + "name": "email_validation", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "timestamp": { + "name": "timestamp", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "project_content": { + "name": "project_content", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "content": { + "name": "content", + "type": "blob", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "project_files": { + "name": "project_files", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "owner": { + "name": "owner", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "navigable": { + "name": "navigable", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": true + }, + "private": { + "name": "private", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "timestamp": { + "name": "timestamp", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "project_files_path_unique": { + "name": "project_files_path_unique", + "columns": [ + "path" + ], + "isUnique": true + } + }, + "foreignKeys": { + "project_files_owner_users_id_fk": { + "name": "project_files_owner_users_id_fk", + "tableFrom": "project_files", + "tableTo": "users", + "columnsFrom": [ + "owner" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "user_permissions": { + "name": "user_permissions", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "user_permissions_id_users_id_fk": { + "name": "user_permissions_id_users_id_fk", + "tableFrom": "user_permissions", + "tableTo": "users", + "columnsFrom": [ + "id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "user_permissions_id_permission_pk": { + "columns": [ + "id", + "permission" + ], + "name": "user_permissions_id_permission_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "user_sessions": { + "name": "user_sessions", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "timestamp": { + "name": "timestamp", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "user_sessions_user_id_users_id_fk": { + "name": "user_sessions_user_id_users_id_fk", + "tableFrom": "user_sessions", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "user_sessions_id_user_id_pk": { + "columns": [ + "id", + "user_id" + ], + "name": "user_sessions_id_user_id_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "users_data": { + "name": "users_data", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "signin": { + "name": "signin", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "lastTimestamp": { + "name": "lastTimestamp", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "users_data_id_users_id_fk": { + "name": "users_data_id_users_id_fk", + "tableFrom": "users_data", + "tableTo": "users", + "columnsFrom": [ + "id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "users": { + "name": "users", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "state": { + "name": "state", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": { + "users_username_unique": { + "name": "users_username_unique", + "columns": [ + "username" + ], + "isUnique": true + }, + "users_email_unique": { + "name": "users_email_unique", + "columns": [ + "email" + ], + "isUnique": true + }, + "users_hash_unique": { + "name": "users_hash_unique", + "columns": [ + "hash" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} + } +} \ No newline at end of file diff --git a/drizzle/meta/0021_snapshot.json b/drizzle/meta/0021_snapshot.json new file mode 100644 index 0000000..42cea45 --- /dev/null +++ b/drizzle/meta/0021_snapshot.json @@ -0,0 +1,998 @@ +{ + "version": "6", + "dialect": "sqlite", + "id": "1b8ca1cb-ac1d-481e-a8d9-6d3fdffd7e3e", + "prevId": "606c7320-97b9-4a5b-87ad-2f83093d6b55", + "tables": { + "campaign_characters": { + "name": "campaign_characters", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "character": { + "name": "character", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "campaign_characters_id_campaign_id_fk": { + "name": "campaign_characters_id_campaign_id_fk", + "tableFrom": "campaign_characters", + "tableTo": "campaign", + "columnsFrom": [ + "id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + }, + "campaign_characters_character_character_id_fk": { + "name": "campaign_characters_character_character_id_fk", + "tableFrom": "campaign_characters", + "tableTo": "character", + "columnsFrom": [ + "character" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "campaign_characters_id_character_pk": { + "columns": [ + "id", + "character" + ], + "name": "campaign_characters_id_character_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "campaign_logs": { + "name": "campaign_logs", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "from": { + "name": "from", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "timestamp": { + "name": "timestamp", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "details": { + "name": "details", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "campaign_logs_id_campaign_id_fk": { + "name": "campaign_logs_id_campaign_id_fk", + "tableFrom": "campaign_logs", + "tableTo": "campaign", + "columnsFrom": [ + "id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + }, + "campaign_logs_from_campaign_characters_id_fk": { + "name": "campaign_logs_from_campaign_characters_id_fk", + "tableFrom": "campaign_logs", + "tableTo": "campaign_characters", + "columnsFrom": [ + "from" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "campaign_logs_id_from_timestamp_pk": { + "columns": [ + "id", + "from", + "timestamp" + ], + "name": "campaign_logs_id_from_timestamp_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "campaign_members": { + "name": "campaign_members", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "user": { + "name": "user", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "rights": { + "name": "rights", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "campaign_members_id_campaign_id_fk": { + "name": "campaign_members_id_campaign_id_fk", + "tableFrom": "campaign_members", + "tableTo": "campaign", + "columnsFrom": [ + "id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + }, + "campaign_members_user_users_id_fk": { + "name": "campaign_members_user_users_id_fk", + "tableFrom": "campaign_members", + "tableTo": "users", + "columnsFrom": [ + "user" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "campaign_members_id_user_pk": { + "columns": [ + "id", + "user" + ], + "name": "campaign_members_id_user_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "campaign": { + "name": "campaign", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "owner": { + "name": "owner", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "link": { + "name": "link", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'PREPARING'" + }, + "inventory": { + "name": "inventory", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'[]'" + }, + "money": { + "name": "money", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": { + "campaign_owner_users_id_fk": { + "name": "campaign_owner_users_id_fk", + "tableFrom": "campaign", + "tableTo": "users", + "columnsFrom": [ + "owner" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "character_abilities": { + "name": "character_abilities", + "columns": { + "character": { + "name": "character", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "ability": { + "name": "ability", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "value": { + "name": "value", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "max": { + "name": "max", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": { + "character_abilities_character_character_id_fk": { + "name": "character_abilities_character_character_id_fk", + "tableFrom": "character_abilities", + "tableTo": "character", + "columnsFrom": [ + "character" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "character_abilities_character_ability_pk": { + "columns": [ + "character", + "ability" + ], + "name": "character_abilities_character_ability_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "character_choices": { + "name": "character_choices", + "columns": { + "character": { + "name": "character", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "id": { + "name": "id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "choice": { + "name": "choice", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "character_choices_character_character_id_fk": { + "name": "character_choices_character_character_id_fk", + "tableFrom": "character_choices", + "tableTo": "character", + "columnsFrom": [ + "character" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "character_choices_character_id_choice_pk": { + "columns": [ + "character", + "id", + "choice" + ], + "name": "character_choices_character_id_choice_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "character_leveling": { + "name": "character_leveling", + "columns": { + "character": { + "name": "character", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "level": { + "name": "level", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "choice": { + "name": "choice", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "character_leveling_character_character_id_fk": { + "name": "character_leveling_character_character_id_fk", + "tableFrom": "character_leveling", + "tableTo": "character", + "columnsFrom": [ + "character" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "character_leveling_character_level_pk": { + "columns": [ + "character", + "level" + ], + "name": "character_leveling_character_level_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "character": { + "name": "character", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "owner": { + "name": "owner", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "people": { + "name": "people", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "level": { + "name": "level", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "variables": { + "name": "variables", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'{\"health\": 0,\"mana\": 0,\"spells\": [],\"items\": [],\"exhaustion\": 0,\"sickness\": [],\"poisons\": []}'" + }, + "aspect": { + "name": "aspect", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "public_notes": { + "name": "public_notes", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "private_notes": { + "name": "private_notes", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "visibility": { + "name": "visibility", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'private'" + }, + "thumbnail": { + "name": "thumbnail", + "type": "blob", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "character_owner_users_id_fk": { + "name": "character_owner_users_id_fk", + "tableFrom": "character", + "tableTo": "users", + "columnsFrom": [ + "owner" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "character_training": { + "name": "character_training", + "columns": { + "character": { + "name": "character", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "stat": { + "name": "stat", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "level": { + "name": "level", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "choice": { + "name": "choice", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "character_training_character_character_id_fk": { + "name": "character_training_character_character_id_fk", + "tableFrom": "character_training", + "tableTo": "character", + "columnsFrom": [ + "character" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "character_training_character_stat_level_pk": { + "columns": [ + "character", + "stat", + "level" + ], + "name": "character_training_character_stat_level_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "email_validation": { + "name": "email_validation", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "timestamp": { + "name": "timestamp", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "project_content": { + "name": "project_content", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "content": { + "name": "content", + "type": "blob", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "project_files": { + "name": "project_files", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "owner": { + "name": "owner", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "navigable": { + "name": "navigable", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": true + }, + "private": { + "name": "private", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "timestamp": { + "name": "timestamp", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "project_files_path_unique": { + "name": "project_files_path_unique", + "columns": [ + "path" + ], + "isUnique": true + } + }, + "foreignKeys": { + "project_files_owner_users_id_fk": { + "name": "project_files_owner_users_id_fk", + "tableFrom": "project_files", + "tableTo": "users", + "columnsFrom": [ + "owner" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "user_permissions": { + "name": "user_permissions", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "user_permissions_id_users_id_fk": { + "name": "user_permissions_id_users_id_fk", + "tableFrom": "user_permissions", + "tableTo": "users", + "columnsFrom": [ + "id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "user_permissions_id_permission_pk": { + "columns": [ + "id", + "permission" + ], + "name": "user_permissions_id_permission_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "user_sessions": { + "name": "user_sessions", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "timestamp": { + "name": "timestamp", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "user_sessions_user_id_users_id_fk": { + "name": "user_sessions_user_id_users_id_fk", + "tableFrom": "user_sessions", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "user_sessions_id_user_id_pk": { + "columns": [ + "id", + "user_id" + ], + "name": "user_sessions_id_user_id_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "users_data": { + "name": "users_data", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "signin": { + "name": "signin", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "lastTimestamp": { + "name": "lastTimestamp", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "users_data_id_users_id_fk": { + "name": "users_data_id_users_id_fk", + "tableFrom": "users_data", + "tableTo": "users", + "columnsFrom": [ + "id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "users": { + "name": "users", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "state": { + "name": "state", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": { + "users_username_unique": { + "name": "users_username_unique", + "columns": [ + "username" + ], + "isUnique": true + }, + "users_email_unique": { + "name": "users_email_unique", + "columns": [ + "email" + ], + "isUnique": true + }, + "users_hash_unique": { + "name": "users_hash_unique", + "columns": [ + "hash" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} + } +} \ No newline at end of file diff --git a/drizzle/meta/0022_snapshot.json b/drizzle/meta/0022_snapshot.json new file mode 100644 index 0000000..7136b67 --- /dev/null +++ b/drizzle/meta/0022_snapshot.json @@ -0,0 +1,998 @@ +{ + "version": "6", + "dialect": "sqlite", + "id": "98e63b73-701b-4ae1-8472-2ee706e064ff", + "prevId": "1b8ca1cb-ac1d-481e-a8d9-6d3fdffd7e3e", + "tables": { + "campaign_characters": { + "name": "campaign_characters", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "character": { + "name": "character", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "campaign_characters_id_campaign_id_fk": { + "name": "campaign_characters_id_campaign_id_fk", + "tableFrom": "campaign_characters", + "tableTo": "campaign", + "columnsFrom": [ + "id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + }, + "campaign_characters_character_character_id_fk": { + "name": "campaign_characters_character_character_id_fk", + "tableFrom": "campaign_characters", + "tableTo": "character", + "columnsFrom": [ + "character" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "campaign_characters_id_character_pk": { + "columns": [ + "id", + "character" + ], + "name": "campaign_characters_id_character_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "campaign_logs": { + "name": "campaign_logs", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "from": { + "name": "from", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "timestamp": { + "name": "timestamp", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "details": { + "name": "details", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "campaign_logs_id_campaign_id_fk": { + "name": "campaign_logs_id_campaign_id_fk", + "tableFrom": "campaign_logs", + "tableTo": "campaign", + "columnsFrom": [ + "id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + }, + "campaign_logs_from_campaign_characters_character_fk": { + "name": "campaign_logs_from_campaign_characters_character_fk", + "tableFrom": "campaign_logs", + "tableTo": "campaign_characters", + "columnsFrom": [ + "from" + ], + "columnsTo": [ + "character" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "campaign_logs_id_from_timestamp_pk": { + "columns": [ + "id", + "from", + "timestamp" + ], + "name": "campaign_logs_id_from_timestamp_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "campaign_members": { + "name": "campaign_members", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "user": { + "name": "user", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "rights": { + "name": "rights", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "campaign_members_id_campaign_id_fk": { + "name": "campaign_members_id_campaign_id_fk", + "tableFrom": "campaign_members", + "tableTo": "campaign", + "columnsFrom": [ + "id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + }, + "campaign_members_user_users_id_fk": { + "name": "campaign_members_user_users_id_fk", + "tableFrom": "campaign_members", + "tableTo": "users", + "columnsFrom": [ + "user" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "campaign_members_id_user_pk": { + "columns": [ + "id", + "user" + ], + "name": "campaign_members_id_user_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "campaign": { + "name": "campaign", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "owner": { + "name": "owner", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "link": { + "name": "link", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'PREPARING'" + }, + "inventory": { + "name": "inventory", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'[]'" + }, + "money": { + "name": "money", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": { + "campaign_owner_users_id_fk": { + "name": "campaign_owner_users_id_fk", + "tableFrom": "campaign", + "tableTo": "users", + "columnsFrom": [ + "owner" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "character_abilities": { + "name": "character_abilities", + "columns": { + "character": { + "name": "character", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "ability": { + "name": "ability", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "value": { + "name": "value", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "max": { + "name": "max", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": { + "character_abilities_character_character_id_fk": { + "name": "character_abilities_character_character_id_fk", + "tableFrom": "character_abilities", + "tableTo": "character", + "columnsFrom": [ + "character" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "character_abilities_character_ability_pk": { + "columns": [ + "character", + "ability" + ], + "name": "character_abilities_character_ability_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "character_choices": { + "name": "character_choices", + "columns": { + "character": { + "name": "character", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "id": { + "name": "id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "choice": { + "name": "choice", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "character_choices_character_character_id_fk": { + "name": "character_choices_character_character_id_fk", + "tableFrom": "character_choices", + "tableTo": "character", + "columnsFrom": [ + "character" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "character_choices_character_id_choice_pk": { + "columns": [ + "character", + "id", + "choice" + ], + "name": "character_choices_character_id_choice_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "character_leveling": { + "name": "character_leveling", + "columns": { + "character": { + "name": "character", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "level": { + "name": "level", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "choice": { + "name": "choice", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "character_leveling_character_character_id_fk": { + "name": "character_leveling_character_character_id_fk", + "tableFrom": "character_leveling", + "tableTo": "character", + "columnsFrom": [ + "character" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "character_leveling_character_level_pk": { + "columns": [ + "character", + "level" + ], + "name": "character_leveling_character_level_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "character": { + "name": "character", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "owner": { + "name": "owner", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "people": { + "name": "people", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "level": { + "name": "level", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "variables": { + "name": "variables", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'{\"health\": 0,\"mana\": 0,\"spells\": [],\"items\": [],\"exhaustion\": 0,\"sickness\": [],\"poisons\": []}'" + }, + "aspect": { + "name": "aspect", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "public_notes": { + "name": "public_notes", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "private_notes": { + "name": "private_notes", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "visibility": { + "name": "visibility", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'private'" + }, + "thumbnail": { + "name": "thumbnail", + "type": "blob", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "character_owner_users_id_fk": { + "name": "character_owner_users_id_fk", + "tableFrom": "character", + "tableTo": "users", + "columnsFrom": [ + "owner" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "character_training": { + "name": "character_training", + "columns": { + "character": { + "name": "character", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "stat": { + "name": "stat", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "level": { + "name": "level", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "choice": { + "name": "choice", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "character_training_character_character_id_fk": { + "name": "character_training_character_character_id_fk", + "tableFrom": "character_training", + "tableTo": "character", + "columnsFrom": [ + "character" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "character_training_character_stat_level_pk": { + "columns": [ + "character", + "stat", + "level" + ], + "name": "character_training_character_stat_level_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "email_validation": { + "name": "email_validation", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "timestamp": { + "name": "timestamp", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "project_content": { + "name": "project_content", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "content": { + "name": "content", + "type": "blob", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "project_files": { + "name": "project_files", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "owner": { + "name": "owner", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "navigable": { + "name": "navigable", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": true + }, + "private": { + "name": "private", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "timestamp": { + "name": "timestamp", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "project_files_path_unique": { + "name": "project_files_path_unique", + "columns": [ + "path" + ], + "isUnique": true + } + }, + "foreignKeys": { + "project_files_owner_users_id_fk": { + "name": "project_files_owner_users_id_fk", + "tableFrom": "project_files", + "tableTo": "users", + "columnsFrom": [ + "owner" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "user_permissions": { + "name": "user_permissions", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "user_permissions_id_users_id_fk": { + "name": "user_permissions_id_users_id_fk", + "tableFrom": "user_permissions", + "tableTo": "users", + "columnsFrom": [ + "id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "user_permissions_id_permission_pk": { + "columns": [ + "id", + "permission" + ], + "name": "user_permissions_id_permission_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "user_sessions": { + "name": "user_sessions", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "timestamp": { + "name": "timestamp", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "user_sessions_user_id_users_id_fk": { + "name": "user_sessions_user_id_users_id_fk", + "tableFrom": "user_sessions", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "user_sessions_id_user_id_pk": { + "columns": [ + "id", + "user_id" + ], + "name": "user_sessions_id_user_id_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "users_data": { + "name": "users_data", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "signin": { + "name": "signin", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "lastTimestamp": { + "name": "lastTimestamp", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "users_data_id_users_id_fk": { + "name": "users_data_id_users_id_fk", + "tableFrom": "users_data", + "tableTo": "users", + "columnsFrom": [ + "id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "users": { + "name": "users", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "state": { + "name": "state", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": { + "users_username_unique": { + "name": "users_username_unique", + "columns": [ + "username" + ], + "isUnique": true + }, + "users_email_unique": { + "name": "users_email_unique", + "columns": [ + "email" + ], + "isUnique": true + }, + "users_hash_unique": { + "name": "users_hash_unique", + "columns": [ + "hash" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} + } +} \ No newline at end of file diff --git a/drizzle/meta/_journal.json b/drizzle/meta/_journal.json index a1f2286..7618071 100644 --- a/drizzle/meta/_journal.json +++ b/drizzle/meta/_journal.json @@ -134,6 +134,34 @@ "when": 1761829250157, "tag": "0018_friendly_deadpool", "breakpoints": true + }, + { + "idx": 19, + "version": "6", + "when": 1762260955744, + "tag": "0019_flaky_steel_serpent", + "breakpoints": true + }, + { + "idx": 20, + "version": "6", + "when": 1762261125335, + "tag": "0020_daily_echo", + "breakpoints": true + }, + { + "idx": 21, + "version": "6", + "when": 1762947637242, + "tag": "0021_familiar_dagger", + "breakpoints": true + }, + { + "idx": 22, + "version": "6", + "when": 1762948869537, + "tag": "0022_warm_bushwacker", + "breakpoints": true } ] } \ No newline at end of file diff --git a/nuxt.config.ts b/nuxt.config.ts index eb74bd3..87c6b51 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -130,6 +130,7 @@ export default defineNuxtConfig({ preset: 'bun', experimental: { tasks: true, + websocket: true, }, watchOptions: { usePolling: true, diff --git a/pages/campaign/(automatic)/join.client.vue b/pages/campaign/(automatic)/join.client.vue deleted file mode 100644 index e69de29..0000000 diff --git a/pages/campaign/[id]/edit.client.vue b/pages/campaign/[id]/edit.client.vue index 41a40c8..27e0f69 100644 --- a/pages/campaign/[id]/edit.client.vue +++ b/pages/campaign/[id]/edit.client.vue @@ -1 +1,3 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/pages/campaign/[id]/index.client.vue b/pages/campaign/[id]/index.client.vue index 41a40c8..123ca13 100644 --- a/pages/campaign/[id]/index.client.vue +++ b/pages/campaign/[id]/index.client.vue @@ -1 +1,79 @@ - \ No newline at end of file + + + \ No newline at end of file diff --git a/pages/campaign/index.client.vue b/pages/campaign/index.client.vue index 30ab567..7cd36cd 100644 --- a/pages/campaign/index.client.vue +++ b/pages/campaign/index.client.vue @@ -1,68 +1,166 @@