diff --git a/drizzle/0001_dapper_spiral.sql b/drizzle/0001_dapper_spiral.sql new file mode 100644 index 0000000..efd59eb --- /dev/null +++ b/drizzle/0001_dapper_spiral.sql @@ -0,0 +1,24 @@ +CREATE TABLE `artists_to_games` ( + `artist_id` varchar(255), + `game_id` varchar(255) +); +--> statement-breakpoint +CREATE TABLE `categories_to_games` ( + `category_id` varchar(255), + `game_id` varchar(255) +); +--> statement-breakpoint +CREATE TABLE `designers_to_games` ( + `designer_id` varchar(255), + `game_id` varchar(255) +); +--> statement-breakpoint +CREATE TABLE `mechanics_to_games` ( + `mechanic_id` varchar(255), + `game_id` varchar(255) +); +--> statement-breakpoint +CREATE TABLE `publishers_to_games` ( + `publisher_id` varchar(255), + `game_id` varchar(255) +); diff --git a/drizzle/meta/0001_snapshot.json b/drizzle/meta/0001_snapshot.json new file mode 100644 index 0000000..08fc2ae --- /dev/null +++ b/drizzle/meta/0001_snapshot.json @@ -0,0 +1,1233 @@ +{ + "version": "5", + "dialect": "mysql", + "id": "ab7f5925-a7ee-4cc4-8def-045d0cb29d75", + "prevId": "4a97ddeb-b977-401f-ad10-a4ae738d1254", + "tables": { + "artists": { + "name": "artists", + "columns": { + "id": { + "name": "id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "slug": { + "name": "slug", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "external_id": { + "name": "external_id", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now(6))" + }, + "updated_at": { + "name": "updated_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now(6))" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "artists_id": { + "name": "artists_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {} + }, + "artists_to_games": { + "name": "artists_to_games", + "columns": { + "artist_id": { + "name": "artist_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "game_id": { + "name": "game_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "categories": { + "name": "categories", + "columns": { + "id": { + "name": "id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "slug": { + "name": "slug", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "external_id": { + "name": "external_id", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now(6))" + }, + "updated_at": { + "name": "updated_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now(6))" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "categories_id": { + "name": "categories_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {} + }, + "categories_to_games": { + "name": "categories_to_games", + "columns": { + "category_id": { + "name": "category_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "game_id": { + "name": "game_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "collection_items": { + "name": "collection_items", + "columns": { + "id": { + "name": "id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "collection_id": { + "name": "collection_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "game_id": { + "name": "game_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now(6))" + }, + "updated_at": { + "name": "updated_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now(6))" + } + }, + "indexes": {}, + "foreignKeys": { + "collection_items_collection_id_collections_id_fk": { + "name": "collection_items_collection_id_collections_id_fk", + "tableFrom": "collection_items", + "tableTo": "collections", + "columnsFrom": [ + "collection_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "collection_items_game_id_games_id_fk": { + "name": "collection_items_game_id_games_id_fk", + "tableFrom": "collection_items", + "tableTo": "games", + "columnsFrom": [ + "game_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "collection_items_id": { + "name": "collection_items_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {} + }, + "collections": { + "name": "collections", + "columns": { + "id": { + "name": "id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now(6))" + }, + "updated_at": { + "name": "updated_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now(6))" + } + }, + "indexes": {}, + "foreignKeys": { + "collections_user_id_users_id_fk": { + "name": "collections_user_id_users_id_fk", + "tableFrom": "collections", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "collections_id": { + "name": "collections_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {} + }, + "designers": { + "name": "designers", + "columns": { + "id": { + "name": "id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "slug": { + "name": "slug", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "external_id": { + "name": "external_id", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now(6))" + }, + "updated_at": { + "name": "updated_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now(6))" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "designers_id": { + "name": "designers_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {} + }, + "designers_to_games": { + "name": "designers_to_games", + "columns": { + "designer_id": { + "name": "designer_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "game_id": { + "name": "game_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "expansions": { + "name": "expansions", + "columns": { + "id": { + "name": "id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "base_game_id": { + "name": "base_game_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "game_id": { + "name": "game_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now(6))" + }, + "updated_at": { + "name": "updated_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now(6))" + } + }, + "indexes": {}, + "foreignKeys": { + "expansions_base_game_id_games_id_fk": { + "name": "expansions_base_game_id_games_id_fk", + "tableFrom": "expansions", + "tableTo": "games", + "columnsFrom": [ + "base_game_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "expansions_game_id_games_id_fk": { + "name": "expansions_game_id_games_id_fk", + "tableFrom": "expansions", + "tableTo": "games", + "columnsFrom": [ + "game_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "expansions_id": { + "name": "expansions_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {} + }, + "games": { + "name": "games", + "columns": { + "id": { + "name": "id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "slug": { + "name": "slug", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "year_published": { + "name": "year_published", + "type": "year", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "min_players": { + "name": "min_players", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "max_players": { + "name": "max_players", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "playtime": { + "name": "playtime", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "min_playtime": { + "name": "min_playtime", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "max_playtime": { + "name": "max_playtime", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "min_age": { + "name": "min_age", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "image_url": { + "name": "image_url", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "thumb_url": { + "name": "thumb_url", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "url": { + "name": "url", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "external_id": { + "name": "external_id", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "last_sync_at": { + "name": "last_sync_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now(6))" + }, + "updated_at": { + "name": "updated_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now(6))" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "games_id": { + "name": "games_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": { + "games_external_id_unique": { + "name": "games_external_id_unique", + "columns": [ + "external_id" + ] + } + } + }, + "mechanics": { + "name": "mechanics", + "columns": { + "id": { + "name": "id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "slug": { + "name": "slug", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "external_id": { + "name": "external_id", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now(6))" + }, + "updated_at": { + "name": "updated_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now(6))" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "mechanics_id": { + "name": "mechanics_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {} + }, + "mechanics_to_games": { + "name": "mechanics_to_games", + "columns": { + "mechanic_id": { + "name": "mechanic_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "game_id": { + "name": "game_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "publishers": { + "name": "publishers", + "columns": { + "id": { + "name": "id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "slug": { + "name": "slug", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "external_id": { + "name": "external_id", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now(6))" + }, + "updated_at": { + "name": "updated_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now(6))" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "publishers_id": { + "name": "publishers_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {} + }, + "publishers_to_games": { + "name": "publishers_to_games", + "columns": { + "publisher_id": { + "name": "publisher_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "game_id": { + "name": "game_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "roles": { + "name": "roles", + "columns": { + "id": { + "name": "id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "roles_id": { + "name": "roles_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": { + "roles_name_unique": { + "name": "roles_name_unique", + "columns": [ + "name" + ] + } + } + }, + "sessions": { + "name": "sessions", + "columns": { + "id": { + "name": "id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "ip_country": { + "name": "ip_country", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "ip_address": { + "name": "ip_address", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "expires_at": { + "name": "expires_at", + "type": "datetime", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "sessions_user_id_users_id_fk": { + "name": "sessions_user_id_users_id_fk", + "tableFrom": "sessions", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "sessions_id": { + "name": "sessions_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {} + }, + "user_roles": { + "name": "user_roles", + "columns": { + "id": { + "name": "id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role_id": { + "name": "role_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now(6))" + }, + "updated_at": { + "name": "updated_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now(6))" + } + }, + "indexes": {}, + "foreignKeys": { + "user_roles_user_id_users_id_fk": { + "name": "user_roles_user_id_users_id_fk", + "tableFrom": "user_roles", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "user_roles_role_id_roles_id_fk": { + "name": "user_roles_role_id_roles_id_fk", + "tableFrom": "user_roles", + "tableTo": "roles", + "columnsFrom": [ + "role_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "user_roles_id": { + "name": "user_roles_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {} + }, + "users": { + "name": "users", + "columns": { + "id": { + "name": "id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "username": { + "name": "username", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "hashed_password": { + "name": "hashed_password", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "first_name": { + "name": "first_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "last_name": { + "name": "last_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "verified": { + "name": "verified", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": false + }, + "receive_email": { + "name": "receive_email", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": false + }, + "theme": { + "name": "theme", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'system'" + }, + "created_at": { + "name": "created_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now(6))" + }, + "updated_at": { + "name": "updated_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now(6))" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "users_id": { + "name": "users_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": { + "users_username_unique": { + "name": "users_username_unique", + "columns": [ + "username" + ] + }, + "users_email_unique": { + "name": "users_email_unique", + "columns": [ + "email" + ] + } + } + }, + "wishlist_items": { + "name": "wishlist_items", + "columns": { + "id": { + "name": "id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "wishlist_id": { + "name": "wishlist_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "game_id": { + "name": "game_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now(6))" + }, + "updated_at": { + "name": "updated_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now(6))" + } + }, + "indexes": {}, + "foreignKeys": { + "wishlist_items_wishlist_id_wishlists_id_fk": { + "name": "wishlist_items_wishlist_id_wishlists_id_fk", + "tableFrom": "wishlist_items", + "tableTo": "wishlists", + "columnsFrom": [ + "wishlist_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "wishlist_items_game_id_games_id_fk": { + "name": "wishlist_items_game_id_games_id_fk", + "tableFrom": "wishlist_items", + "tableTo": "games", + "columnsFrom": [ + "game_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "wishlist_items_id": { + "name": "wishlist_items_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {} + }, + "wishlists": { + "name": "wishlists", + "columns": { + "id": { + "name": "id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now(6))" + }, + "updated_at": { + "name": "updated_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now(6))" + } + }, + "indexes": {}, + "foreignKeys": { + "wishlists_user_id_users_id_fk": { + "name": "wishlists_user_id_users_id_fk", + "tableFrom": "wishlists", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "wishlists_id": { + "name": "wishlists_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {} + } + }, + "schemas": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + } +} \ No newline at end of file diff --git a/drizzle/meta/_journal.json b/drizzle/meta/_journal.json index 027688f..eb701c4 100644 --- a/drizzle/meta/_journal.json +++ b/drizzle/meta/_journal.json @@ -8,6 +8,13 @@ "when": 1707012854588, "tag": "0000_smooth_thunderbolt", "breakpoints": true + }, + { + "idx": 1, + "version": "5", + "when": 1707097761920, + "tag": "0001_dapper_spiral", + "breakpoints": true } ] } \ No newline at end of file diff --git a/src/schema.ts b/src/schema.ts index a566559..279c298 100644 --- a/src/schema.ts +++ b/src/schema.ts @@ -1,4 +1,4 @@ -import { sql } from 'drizzle-orm'; +import { relations, sql } from 'drizzle-orm'; import { mysqlTable, datetime, varchar, boolean, timestamp, year, int, text } from 'drizzle-orm/mysql-core'; import { nanoid } from 'nanoid'; @@ -52,7 +52,9 @@ export const users = mysqlTable("users", { updatedAt: datetime("updated_at").default(sql`(now(6))`) }); - +export const user_relations = relations(users, ({ many }) => ({ + user_roles: many(user_roles) +})); // model Session { // id String @id @unique @@ -118,7 +120,7 @@ export const roles = mysqlTable("roles", { // @@map("user_roles") // } -export const userRoles = mysqlTable("user_roles", { +export const user_roles = mysqlTable("user_roles", { id: varchar("id", { length: 255 }).primaryKey() @@ -137,6 +139,17 @@ export const userRoles = mysqlTable("user_roles", { updatedAt: datetime("updated_at").default(sql`(now(6))`) }); +export const user_role_relations = relations(user_roles, ({ one }) => ({ + role: one(roles, { + fields: [user_roles.roleId], + references: [roles.id] + }), + user: one(users, { + fields: [user_roles.userId], + references: [users.id] + }) +})); + // model Game { // id String @id @default(cuid()) // name String @@ -206,7 +219,15 @@ export const games = mysqlTable("games", { lastSyncAt: datetime("last_sync_at"), createdAt: datetime("created_at").default(sql`(now(6))`), updatedAt: datetime("updated_at").default(sql`(now(6))`) -}) +}); + +export const gameRelations = relations(games, ({ many }) => ({ + categories_to_games: many(categories_to_games), + mechanics_to_games: many(mechanics_to_games), + designers_to_games: many(designers_to_games), + publishers_to_games: many(publishers_to_games), + artists_to_games: many(artists_to_games), +})) // model Expansion { // id String @id @default(cuid()) @@ -241,6 +262,17 @@ export const expansions = mysqlTable("expansions", { updatedAt: datetime("updated_at").default(sql`(now(6))`) }) +export const expansion_relations = relations(expansions, ({ one }) => ({ + baseGame: one(games, { + fields: [expansions.baseGameId], + references: [games.id] + }), + game: one(games, { + fields: [expansions.gameId], + references: [games.id] + }) +})); + // model Collection { // id String @id @default(cuid()) // user_id String @unique @@ -263,7 +295,14 @@ export const collections = mysqlTable("collections", { .references(() => users.id, { onDelete: 'cascade' }), createdAt: datetime("created_at").default(sql`(now(6))`), updatedAt: datetime("updated_at").default(sql`(now(6))`) -}) +}); + +export const collection_relations = relations(collections, ({ one }) => ({ + user: one(users, { + fields: [collections.userId], + references: [users.id] + }), +})) // model CollectionItem { // id String @id @default(cuid()) @@ -279,7 +318,7 @@ export const collections = mysqlTable("collections", { // @@map("collection_items") // } -export const collectionItems = mysqlTable("collection_items", { +export const collection_items = mysqlTable("collection_items", { id: varchar("id", { length: 255 }).primaryKey() @@ -296,7 +335,18 @@ export const collectionItems = mysqlTable("collection_items", { .references(() => games.id, { onDelete: 'cascade' }), createdAt: datetime("created_at").default(sql`(now(6))`), updatedAt: datetime("updated_at").default(sql`(now(6))`) -}) +}); + +export const collection_item_relations = relations(collection_items, ({ one }) =>({ + collection: one(collections, { + fields: [collection_items.collectionId], + references: [collections.id] + }), + game: one(games, { + fields: [collection_items.gameId], + references: [games.id] + }) +})); // model Wishlist { // id String @id @default(cuid()) @@ -322,6 +372,13 @@ export const wishlists = mysqlTable("wishlists", { updatedAt: datetime("updated_at").default(sql`(now(6))`) }); +export const wishlists_relations = relations(wishlists, ({ one }) => ({ + user: one(users, { + fields: [wishlists.userId], + references: [users.id] + }), +})) + // model WishlistItem { // id String @id @default(cuid()) // wishlist_id String @@ -337,25 +394,37 @@ export const wishlists = mysqlTable("wishlists", { // @@map("wishlist_items") // } -export const wishlistItems = mysqlTable("wishlist_items", { - id: varchar("id", { - length: 255 - }).primaryKey() - .$defaultFn(() => nanoid()), - wishlistId: varchar("wishlist_id", { - length: 255 - }) - .notNull() - .references(() => wishlists.id, { onDelete: 'cascade' }), - gameId: varchar("game_id", { - length: 255 - }) - .notNull() - .references(() => games.id, { onDelete: 'cascade' }), - createdAt: datetime("created_at").default(sql`(now(6))`), - updatedAt: datetime("updated_at").default(sql`(now(6))`) +export const wishlist_items = mysqlTable('wishlist_items', { + id: varchar('id', { + length: 255 + }) + .primaryKey() + .$defaultFn(() => nanoid()), + wishlistId: varchar('wishlist_id', { + length: 255 + }) + .notNull() + .references(() => wishlists.id, { onDelete: 'cascade' }), + gameId: varchar('game_id', { + length: 255 + }) + .notNull() + .references(() => games.id, { onDelete: 'cascade' }), + createdAt: datetime('created_at').default(sql`(now(6))`), + updatedAt: datetime('updated_at').default(sql`(now(6))`) }); +export const wishlist_item_relations = relations(wishlist_items, ({ one }) => ({ + wishlist: one(wishlists, { + fields: [wishlist_items.wishlistId], + references: [wishlists.id] + }), + game: one(games, { + fields: [wishlist_items.gameId], + references: [games.id] + }) +})) + // model List { // id String @id @default(cuid()) // name String @@ -422,7 +491,11 @@ export const publishers = mysqlTable("publishers", { externalId: int("external_id"), createdAt: datetime("created_at").default(sql`(now(6))`), updatedAt: datetime("updated_at").default(sql`(now(6))`) -}) +}); + +export const publishers_relations = relations(publishers, ({ many }) => ({ + publishers_to_games: many(publishers_to_games) +})); // model Category { // id String @id @default(cuid()) @@ -451,7 +524,11 @@ export const categories = mysqlTable("categories", { externalId: int("external_id"), createdAt: datetime("created_at").default(sql`(now(6))`), updatedAt: datetime("updated_at").default(sql`(now(6))`) -}) +}); + +export const categories_relations = relations(categories, ({ many }) => ({ + categories_to_games: many(categories_to_games) +})); // model Mechanic { // id String @id @default(cuid()) @@ -480,7 +557,11 @@ export const mechanics = mysqlTable("mechanics", { externalId: int("external_id"), createdAt: datetime("created_at").default(sql`(now(6))`), updatedAt: datetime("updated_at").default(sql`(now(6))`) -}) +}); + +export const mechanic_relations = relations(mechanics, ({ many }) => ({ + mechanics_to_games: many(mechanics_to_games) +})) // model Designer { // id String @id @default(cuid()) @@ -509,7 +590,11 @@ export const designers = mysqlTable("designers", { externalId: int("external_id"), createdAt: datetime("created_at").default(sql`(now(6))`), updatedAt: datetime("updated_at").default(sql`(now(6))`) -}) +}); + +export const designers_relations = relations(designers, ({ many }) => ({ + designers_to_games: many(designers_to_games) +})); // model Artist { // id String @id @default(cuid()) @@ -538,4 +623,108 @@ export const artists = mysqlTable("artists", { externalId: int("external_id"), createdAt: datetime("created_at").default(sql`(now(6))`), updatedAt: datetime("updated_at").default(sql`(now(6))`) -}) +}); + +export const artists_relations = relations(artists, ({ many }) => ({ + artists_to_games: many(artists_to_games) +})); + +export const artists_to_games = mysqlTable('artists_to_games', { + artistId: varchar('artist_id', { + length: 255 + }), + gameId: varchar('game_id', { + length: 255 + }), +}); + +export const artists_to_games_relations = relations(artists_to_games, ({ one }) => ({ + artist: one(artists, { + fields: [artists_to_games.artistId], + references: [artists.id] + }), + game: one(games, { + fields: [artists_to_games.gameId], + references: [games.id] + }), +})); + +export const categories_to_games = mysqlTable("categories_to_games", { + categoryId: varchar("category_id", { + length: 255 + }), + gameId: varchar("game_id", { + length: 255 + }), +}); + +export const categories_to_games_relations = relations(categories_to_games, ({ one }) => ({ + category: one(categories, { + fields: [categories_to_games.categoryId], + references: [categories.id] + }), + game: one(games, { + fields: [categories_to_games.gameId], + references: [games.id] + }), +})) + +export const designers_to_games = mysqlTable("designers_to_games", { + designerId: varchar("designer_id", { + length: 255 + }), + gameId: varchar("game_id", { + length: 255 + }), +}); + +export const designers_to_games_relations = relations(designers_to_games, ({ one }) => ({ + designer: one(designers, { + fields: [designers_to_games.designerId], + references: [designers.id] + }), + game: one(games, { + fields: [designers_to_games.gameId], + references: [games.id] + }), +})) + +export const mechanics_to_games = mysqlTable("mechanics_to_games", { + mechanicId: varchar("mechanic_id", { + length: 255 + }), + gameId: varchar("game_id", { + length: 255 + }), +}); + +export const mechanics_to_games_relations = relations(mechanics_to_games, ({ one }) => ({ + mechanic: one(mechanics, { + fields: [mechanics_to_games.mechanicId], + references: [mechanics.id] + }), + game: one(games, { + fields: [mechanics_to_games.gameId], + references: [games.id] + }), +})); + +export const publishers_to_games = mysqlTable("publishers_to_games", { + publisherId: varchar("publisher_id", { + length: 255 + }), + gameId: varchar("game_id", { + length: 255 + }), +}); + +export const publishers_to_games_relations = relations(publishers_to_games, ({ one }) => ({ + publisher: one(publishers, { + fields: [publishers_to_games.publisherId], + references: [publishers.id] + }), + game: one(games, { + fields: [publishers_to_games.gameId], + references: [games.id] + }), +}));