From df3577f6733b25a10d02e2866784a65a751cc3be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Pons?= Date: Wed, 30 Apr 2025 17:44:54 +0200 Subject: [PATCH] New SQL tables structure --- db.sqlite | Bin 614400 -> 622592 bytes db.sqlite-shm | Bin 32768 -> 32768 bytes db.sqlite-wal | Bin 74192 -> 53592 bytes db/schema.ts | 82 ++- drizzle/0010_bored_sabra.sql | 47 ++ drizzle/0011_demonic_titania.sql | 1 + drizzle/0012_graceful_energizer.sql | 12 + drizzle/meta/0010_snapshot.json | 724 +++++++++++++++++++ drizzle/meta/0011_snapshot.json | 732 +++++++++++++++++++ drizzle/meta/0012_snapshot.json | 740 ++++++++++++++++++++ drizzle/meta/_journal.json | 21 + layouts/default.vue | 18 +- pages/character/[id]/edit.client.vue | 131 ++-- pages/character/[id]/index.client.vue | 71 +- pages/character/index.client.vue | 2 +- server/api/character.get.ts | 83 ++- server/api/character.post.ts | 59 +- server/api/character/[id].get.ts | 45 +- server/api/character/[id].post.ts | 52 +- server/api/character/[id]/compiled.get.ts | 152 ++-- server/api/character/[id]/duplicate.post.ts | 2 +- server/api/character/[id]/values.get.ts | 2 +- server/api/character/[id]/values.post.ts | 4 +- shared/general.util.ts | 17 +- types/character.ts | 116 ++- 25 files changed, 2755 insertions(+), 358 deletions(-) create mode 100644 drizzle/0010_bored_sabra.sql create mode 100644 drizzle/0011_demonic_titania.sql create mode 100644 drizzle/0012_graceful_energizer.sql create mode 100644 drizzle/meta/0010_snapshot.json create mode 100644 drizzle/meta/0011_snapshot.json create mode 100644 drizzle/meta/0012_snapshot.json diff --git a/db.sqlite b/db.sqlite index 73ade66b823e509dd63cfa0ef7c117664a0bdd0f..cb89a88d707dc3a3822247790d2bdd8c9355b7ac 100644 GIT binary patch delta 7200 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 NFWq%(o|y%9{14X|J#PR2 literal 74192 zcmeI)U5Hdw0KoCt*_mM%^4@J>OC(5yYK=K^KhFJ1d$FPgsZ22R@qRk1s0d{*QfUu@ zFK%kdQn4um`zQ;FZyWTIK~FwxK}GFiiL&8Bib92+D;UJU=+I4PcmEe=VK0Y!@A;i` zUxq*9yYroLYv(N}5n+L$)2PIDlD00IagfB*srAbm|PH zOW`}I6w=B}5lPPyp%YqZ5;;*M?Z&|MiF$uNIu3l>3^Pxdev}Fs2AK%c*cOIixmg&y zo}FZk$1ZKI*YeS>ZDy&oLy;wJCS(>SB5<-;#L^2>%d)M+PaD;1-_)!5=+w_*GY(u4 zdrl&xR0DlGmcnpM&oXT*a{Z)Ht!=MY^3j=ZSgCEU`J8l$WV zMdVqrP&2gRFm)|yd1~~bdQU#um%eSprn-NcsL`nmL=a_Cq@J3hXBd%VxQ%LgjatY) z_4(&}fuX(cY`FgH#Gd?nfwDeZ(ihYp4g?TD009ILKmY**5I_I{1Q1x90xQbZQl-+r zV`TSWqc*xp>&gG^+41T|E&pO=SWW6*y};za`1xlx%rxl*7Uy#F)CeGe00IagfB*sr zAb`MP7wD)LI7Kf|bT9CC{pi9+qoWh_0*n1k;`tFk009ILKmY**5I_I{1Q1XHZF_-J zExo|t;pC4K2eK>l0_+|H5I_I{1Q0*~0R#|00D(s#&`~dNnqHvjUf_e{#@m>IItg0!8-%uMhorVa=0A*U}3-&~{}I0tg_000IagfB*srAbAoS_#ex)=EV#KJG< zXAT^v7kKDfpBo~800IagfB*srAb*Z`s24a( zFHm$Z@bnA2{NeZZ{X{RYBwsHkg#ZEwAb usersTable.id, { onDelete: 'cascade', onUpdate: 'cascade' }), timestamp: int({ mode: 'timestamp' }).notNull().$defaultFn(() => new Date()), -}, (table): SQLiteTableExtraConfig => { - return { - pk: primaryKey({ columns: [table.id, table.user_id] }), - } -}); +}, (table) => [primaryKey({ columns: [table.id, table.user_id] })]); export const userPermissionsTable = sqliteTable("user_permissions", { id: int().notNull().references(() => usersTable.id, { onDelete: 'cascade', onUpdate: 'cascade' }), permission: text().notNull(), -}, (table): SQLiteTableExtraConfig => { - return { - pk: primaryKey({ columns: [table.id, table.permission] }), - } -}); +}, (table) => [primaryKey({ columns: [table.id, table.permission] })]); export const explorerContentTable = sqliteTable("explorer_content", { path: text().primaryKey(), @@ -57,11 +50,47 @@ export const characterTable = sqliteTable("character", { id: int().primaryKey({ autoIncrement: true }), name: text().notNull(), owner: int().notNull().references(() => usersTable.id, { onDelete: 'cascade', onUpdate: 'cascade' }), - progress: text({ mode: 'json' }).notNull(), - values: text({ mode: 'json' }).notNull().default({}), + people: int().notNull(), + level: int().notNull().default(1), + aspect: int(), + notes: text(), + health: int().notNull().default(0), + mana: int().notNull().default(0), + visibility: text({ enum: ['private', 'public'] }).notNull().default('private'), thumbnail: blob(), -}) +}); + +export const characterTrainingTable = sqliteTable("character_training", { + character: int().notNull().references(() => characterTable.id, { onDelete: 'cascade', onUpdate: 'cascade' }), + stat: text({ enum: MAIN_STATS }).notNull(), + level: int().notNull(), + choice: int().notNull(), +}, (table) => [primaryKey({ columns: [table.character, table.stat, table.level] })]); + +export const characterLevelingTable = sqliteTable("character_leveling", { + character: int().notNull().references(() => characterTable.id, { onDelete: 'cascade', onUpdate: 'cascade' }), + level: int().notNull(), + choice: int().notNull(), +}, (table) => [primaryKey({ columns: [table.character, table.level] })]); + +export const characterAbilitiesTable = sqliteTable("character_abilities", { + character: int().notNull().references(() => characterTable.id, { onDelete: 'cascade', onUpdate: 'cascade' }), + ability: text({ enum: ABILITIES }).notNull(), + value: int().notNull().default(0), + max: int().notNull().default(0), +}, (table) => [primaryKey({ columns: [table.character, table.ability] })]); + +export const characterModifiersTable = sqliteTable("character_modifiers", { + character: int().notNull().references(() => characterTable.id, { onDelete: 'cascade', onUpdate: 'cascade' }), + modifier: text({ enum: MAIN_STATS }).notNull(), + value: int().notNull().default(0), +}, (table) => [primaryKey({ columns: [table.character, table.modifier] })]); + +export const characterSpellsTable = sqliteTable("character_spell", { + character: int().notNull().references(() => characterTable.id, { onDelete: 'cascade', onUpdate: 'cascade' }), + value: text().notNull(), +}, (table) => [primaryKey({ columns: [table.character, table.value] })]); export const usersRelation = relations(usersTable, ({ one, many }) => ({ data: one(usersDataTable, { fields: [usersTable.id], references: [usersDataTable.id], }), @@ -81,6 +110,27 @@ export const userPermissionsRelation = relations(userPermissionsTable, ({ one }) export const explorerContentRelation = relations(explorerContentTable, ({ one }) => ({ users: one(usersTable, { fields: [explorerContentTable.owner], references: [usersTable.id], }), })); -export const characterRelation = relations(characterTable, ({ one }) => ({ - users: one(usersTable, { fields: [characterTable.owner], references: [usersTable.id], }), +export const characterRelation = relations(characterTable, ({ one, many }) => ({ + user: one(usersTable, { fields: [characterTable.owner], references: [usersTable.id], }), + training: many(characterTrainingTable), + levels: many(characterLevelingTable), + abilities: many(characterAbilitiesTable), + modifiers: many(characterModifiersTable), + spells: many(characterSpellsTable) +})); + +export const characterTrainingRelation = relations(characterTrainingTable, ({ one }) => ({ + character: one(characterTable, { fields: [characterTrainingTable.character], references: [characterTable.id] }) +})); +export const characterLevelingRelation = relations(characterLevelingTable, ({ one }) => ({ + character: one(characterTable, { fields: [characterLevelingTable.character], references: [characterTable.id] }) +})); +export const characterAbilitiesRelation = relations(characterAbilitiesTable, ({ one }) => ({ + character: one(characterTable, { fields: [characterAbilitiesTable.character], references: [characterTable.id] }) +})); +export const characterModifierRelation = relations(characterModifiersTable, ({ one }) => ({ + character: one(characterTable, { fields: [characterModifiersTable.character], references: [characterTable.id] }) +})); +export const characterSpellsRelation = relations(characterSpellsTable, ({ one }) => ({ + character: one(characterTable, { fields: [characterSpellsTable.character], references: [characterTable.id] }) })); \ No newline at end of file diff --git a/drizzle/0010_bored_sabra.sql b/drizzle/0010_bored_sabra.sql new file mode 100644 index 0000000..d61484f --- /dev/null +++ b/drizzle/0010_bored_sabra.sql @@ -0,0 +1,47 @@ +CREATE TABLE `character_abilities` ( + `character` integer NOT NULL, + `ability` text NOT NULL, + `value` integer DEFAULT 0 NOT NULL, + PRIMARY KEY(`character`, `ability`), + FOREIGN KEY (`character`) REFERENCES `character`(`id`) ON UPDATE cascade ON DELETE cascade +); +--> statement-breakpoint +CREATE TABLE `character_leveling` ( + `character` integer NOT NULL, + `level` integer NOT NULL, + `choice` integer NOT NULL, + PRIMARY KEY(`character`, `level`), + FOREIGN KEY (`character`) REFERENCES `character`(`id`) ON UPDATE cascade ON DELETE cascade +); +--> statement-breakpoint +CREATE TABLE `character_modifiers` ( + `character` integer NOT NULL, + `modifier` text NOT NULL, + `value` integer DEFAULT 0 NOT NULL, + PRIMARY KEY(`character`, `modifier`), + FOREIGN KEY (`character`) REFERENCES `character`(`id`) ON UPDATE cascade ON DELETE cascade +); +--> statement-breakpoint +CREATE TABLE `character_spell` ( + `character` integer PRIMARY KEY NOT NULL, + `value` text NOT NULL, + FOREIGN KEY (`character`) REFERENCES `character`(`id`) ON UPDATE cascade ON DELETE cascade +); +--> statement-breakpoint +CREATE TABLE `character_training` ( + `character` integer NOT NULL, + `stat` text NOT NULL, + `level` integer NOT NULL, + `choice` integer NOT NULL, + PRIMARY KEY(`character`, `stat`, `level`), + FOREIGN KEY (`character`) REFERENCES `character`(`id`) ON UPDATE cascade ON DELETE cascade +); +--> statement-breakpoint +ALTER TABLE `character` ADD `people` integer NOT NULL;--> statement-breakpoint +ALTER TABLE `character` ADD `level` integer DEFAULT 1 NOT NULL;--> statement-breakpoint +ALTER TABLE `character` ADD `aspect` integer;--> statement-breakpoint +ALTER TABLE `character` ADD `notes` text;--> statement-breakpoint +ALTER TABLE `character` ADD `health` integer DEFAULT 0 NOT NULL;--> statement-breakpoint +ALTER TABLE `character` ADD `mana` integer DEFAULT 0 NOT NULL;--> statement-breakpoint +ALTER TABLE `character` DROP COLUMN `progress`;--> statement-breakpoint +ALTER TABLE `character` DROP COLUMN `values`; \ No newline at end of file diff --git a/drizzle/0011_demonic_titania.sql b/drizzle/0011_demonic_titania.sql new file mode 100644 index 0000000..9d6ec42 --- /dev/null +++ b/drizzle/0011_demonic_titania.sql @@ -0,0 +1 @@ +ALTER TABLE `character_abilities` ADD `max` integer DEFAULT 0 NOT NULL; \ No newline at end of file diff --git a/drizzle/0012_graceful_energizer.sql b/drizzle/0012_graceful_energizer.sql new file mode 100644 index 0000000..8b45796 --- /dev/null +++ b/drizzle/0012_graceful_energizer.sql @@ -0,0 +1,12 @@ +PRAGMA foreign_keys=OFF;--> statement-breakpoint +CREATE TABLE `__new_character_spell` ( + `character` integer NOT NULL, + `value` text NOT NULL, + PRIMARY KEY(`character`, `value`), + FOREIGN KEY (`character`) REFERENCES `character`(`id`) ON UPDATE cascade ON DELETE cascade +); +--> statement-breakpoint +INSERT INTO `__new_character_spell`("character", "value") SELECT "character", "value" FROM `character_spell`;--> statement-breakpoint +DROP TABLE `character_spell`;--> statement-breakpoint +ALTER TABLE `__new_character_spell` RENAME TO `character_spell`;--> statement-breakpoint +PRAGMA foreign_keys=ON; \ No newline at end of file diff --git a/drizzle/meta/0010_snapshot.json b/drizzle/meta/0010_snapshot.json new file mode 100644 index 0000000..9edee0c --- /dev/null +++ b/drizzle/meta/0010_snapshot.json @@ -0,0 +1,724 @@ +{ + "version": "6", + "dialect": "sqlite", + "id": "af3d9e4f-cea6-42fa-8f8b-d743d97b9c37", + "prevId": "bffde16c-d716-40ec-9d92-cb49814815d7", + "tables": { + "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 + } + }, + "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_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_modifiers": { + "name": "character_modifiers", + "columns": { + "character": { + "name": "character", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "modifier": { + "name": "modifier", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "value": { + "name": "value", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": { + "character_modifiers_character_character_id_fk": { + "name": "character_modifiers_character_character_id_fk", + "tableFrom": "character_modifiers", + "tableTo": "character", + "columnsFrom": [ + "character" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "character_modifiers_character_modifier_pk": { + "columns": [ + "character", + "modifier" + ], + "name": "character_modifiers_character_modifier_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "character_spell": { + "name": "character_spell", + "columns": { + "character": { + "name": "character", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "value": { + "name": "value", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "character_spell_character_character_id_fk": { + "name": "character_spell_character_character_id_fk", + "tableFrom": "character_spell", + "tableTo": "character", + "columnsFrom": [ + "character" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "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": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "level": { + "name": "level", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "aspect": { + "name": "aspect", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "notes": { + "name": "notes", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "health": { + "name": "health", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "mana": { + "name": "mana", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "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": {} + }, + "explorer_content": { + "name": "explorer_content", + "columns": { + "path": { + "name": "path", + "type": "text", + "primaryKey": true, + "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 + }, + "content": { + "name": "content", + "type": "blob", + "primaryKey": false, + "notNull": false, + "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 + }, + "visit": { + "name": "visit", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "timestamp": { + "name": "timestamp", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "explorer_content_owner_users_id_fk": { + "name": "explorer_content_owner_users_id_fk", + "tableFrom": "explorer_content", + "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 + }, + "logCount": { + "name": "logCount", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "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/0011_snapshot.json b/drizzle/meta/0011_snapshot.json new file mode 100644 index 0000000..d0f3f7e --- /dev/null +++ b/drizzle/meta/0011_snapshot.json @@ -0,0 +1,732 @@ +{ + "version": "6", + "dialect": "sqlite", + "id": "e0aaebf1-54e4-4f61-804b-7cce23c88069", + "prevId": "af3d9e4f-cea6-42fa-8f8b-d743d97b9c37", + "tables": { + "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_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_modifiers": { + "name": "character_modifiers", + "columns": { + "character": { + "name": "character", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "modifier": { + "name": "modifier", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "value": { + "name": "value", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": { + "character_modifiers_character_character_id_fk": { + "name": "character_modifiers_character_character_id_fk", + "tableFrom": "character_modifiers", + "tableTo": "character", + "columnsFrom": [ + "character" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "character_modifiers_character_modifier_pk": { + "columns": [ + "character", + "modifier" + ], + "name": "character_modifiers_character_modifier_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "character_spell": { + "name": "character_spell", + "columns": { + "character": { + "name": "character", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "value": { + "name": "value", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "character_spell_character_character_id_fk": { + "name": "character_spell_character_character_id_fk", + "tableFrom": "character_spell", + "tableTo": "character", + "columnsFrom": [ + "character" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "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": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "level": { + "name": "level", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "aspect": { + "name": "aspect", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "notes": { + "name": "notes", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "health": { + "name": "health", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "mana": { + "name": "mana", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "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": {} + }, + "explorer_content": { + "name": "explorer_content", + "columns": { + "path": { + "name": "path", + "type": "text", + "primaryKey": true, + "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 + }, + "content": { + "name": "content", + "type": "blob", + "primaryKey": false, + "notNull": false, + "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 + }, + "visit": { + "name": "visit", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "timestamp": { + "name": "timestamp", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "explorer_content_owner_users_id_fk": { + "name": "explorer_content_owner_users_id_fk", + "tableFrom": "explorer_content", + "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 + }, + "logCount": { + "name": "logCount", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "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/0012_snapshot.json b/drizzle/meta/0012_snapshot.json new file mode 100644 index 0000000..1d540da --- /dev/null +++ b/drizzle/meta/0012_snapshot.json @@ -0,0 +1,740 @@ +{ + "version": "6", + "dialect": "sqlite", + "id": "cb7a2b9c-1392-4f23-9fc2-9ce8de2e0231", + "prevId": "e0aaebf1-54e4-4f61-804b-7cce23c88069", + "tables": { + "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_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_modifiers": { + "name": "character_modifiers", + "columns": { + "character": { + "name": "character", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "modifier": { + "name": "modifier", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "value": { + "name": "value", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": { + "character_modifiers_character_character_id_fk": { + "name": "character_modifiers_character_character_id_fk", + "tableFrom": "character_modifiers", + "tableTo": "character", + "columnsFrom": [ + "character" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "character_modifiers_character_modifier_pk": { + "columns": [ + "character", + "modifier" + ], + "name": "character_modifiers_character_modifier_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "character_spell": { + "name": "character_spell", + "columns": { + "character": { + "name": "character", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "value": { + "name": "value", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "character_spell_character_character_id_fk": { + "name": "character_spell_character_character_id_fk", + "tableFrom": "character_spell", + "tableTo": "character", + "columnsFrom": [ + "character" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "character_spell_character_value_pk": { + "columns": [ + "character", + "value" + ], + "name": "character_spell_character_value_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": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "level": { + "name": "level", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "aspect": { + "name": "aspect", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "notes": { + "name": "notes", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "health": { + "name": "health", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "mana": { + "name": "mana", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "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": {} + }, + "explorer_content": { + "name": "explorer_content", + "columns": { + "path": { + "name": "path", + "type": "text", + "primaryKey": true, + "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 + }, + "content": { + "name": "content", + "type": "blob", + "primaryKey": false, + "notNull": false, + "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 + }, + "visit": { + "name": "visit", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "timestamp": { + "name": "timestamp", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "explorer_content_owner_users_id_fk": { + "name": "explorer_content_owner_users_id_fk", + "tableFrom": "explorer_content", + "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 + }, + "logCount": { + "name": "logCount", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "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 a1e2b07..27d6a11 100644 --- a/drizzle/meta/_journal.json +++ b/drizzle/meta/_journal.json @@ -71,6 +71,27 @@ "when": 1745920443528, "tag": "0009_thin_omega_sentinel", "breakpoints": true + }, + { + "idx": 10, + "version": "6", + "when": 1746014143374, + "tag": "0010_bored_sabra", + "breakpoints": true + }, + { + "idx": 11, + "version": "6", + "when": 1746017162319, + "tag": "0011_demonic_titania", + "breakpoints": true + }, + { + "idx": 12, + "version": "6", + "when": 1746027790969, + "tag": "0012_graceful_energizer", + "breakpoints": true } ] } \ No newline at end of file diff --git a/layouts/default.vue b/layouts/default.vue index dd009e7..546e43f 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -14,9 +14,21 @@ d[any] -
- Mes personnages -
+ + + + + Personnages + + + Tous les personnages + + + +
+ +
+
- + @@ -350,7 +319,7 @@ useShortcuts({
- @@ -363,22 +332,22 @@ useShortcuts({
- +
diff --git a/pages/character/[id]/index.client.vue b/pages/character/[id]/index.client.vue index 9eda723..703fa89 100644 --- a/pages/character/[id]/index.client.vue +++ b/pages/character/[id]/index.client.vue @@ -11,19 +11,7 @@ const id = useRouter().currentRoute.value.params.id; const { user } = useUserSession(); const { add } = useToast(); -const { data: character, status, error } = await useAsyncData(() => useRequestFetch()(`/api/character/${id}/compiled`)); -const { data: values } = await useAsyncData(() => useRequestFetch()(`/api/character/${id}/values`)); - -async function updateValues() -{ - await useRequestFetch()(`/api/character/${id}/values`, { - method: "post", - body: values.value, - onResponseError: (e) => { - add({ duration: 25000, timer: true, type: "success", title: "Erreur", content: e.response.statusText }); - } - }); -} +const { data: character, status, error } = await useFetch(`/api/character/${id}/compiled`);