diff --git a/drizzle/0002_sour_silverclaw.sql b/drizzle/0002_sour_silverclaw.sql
new file mode 100644
index 0000000..cd443f3
--- /dev/null
+++ b/drizzle/0002_sour_silverclaw.sql
@@ -0,0 +1,27 @@
+ALTER TABLE "artists" ALTER COLUMN "created_at" SET DEFAULT now();--> statement-breakpoint
+ALTER TABLE "artists" ALTER COLUMN "updated_at" SET DEFAULT now();--> statement-breakpoint
+ALTER TABLE "categories" ALTER COLUMN "created_at" SET DEFAULT now();--> statement-breakpoint
+ALTER TABLE "categories" ALTER COLUMN "updated_at" SET DEFAULT now();--> statement-breakpoint
+ALTER TABLE "collection_items" ALTER COLUMN "created_at" SET DEFAULT now();--> statement-breakpoint
+ALTER TABLE "collection_items" ALTER COLUMN "updated_at" SET DEFAULT now();--> statement-breakpoint
+ALTER TABLE "collections" ALTER COLUMN "created_at" SET DEFAULT now();--> statement-breakpoint
+ALTER TABLE "collections" ALTER COLUMN "updated_at" SET DEFAULT now();--> statement-breakpoint
+ALTER TABLE "designers" ALTER COLUMN "created_at" SET DEFAULT now();--> statement-breakpoint
+ALTER TABLE "designers" ALTER COLUMN "updated_at" SET DEFAULT now();--> statement-breakpoint
+ALTER TABLE "expansions" ALTER COLUMN "created_at" SET DEFAULT now();--> statement-breakpoint
+ALTER TABLE "expansions" ALTER COLUMN "updated_at" SET DEFAULT now();--> statement-breakpoint
+ALTER TABLE "games" ALTER COLUMN "created_at" SET DEFAULT now();--> statement-breakpoint
+ALTER TABLE "games" ALTER COLUMN "updated_at" SET DEFAULT now();--> statement-breakpoint
+ALTER TABLE "mechanics" ALTER COLUMN "created_at" SET DEFAULT now();--> statement-breakpoint
+ALTER TABLE "mechanics" ALTER COLUMN "updated_at" SET DEFAULT now();--> statement-breakpoint
+ALTER TABLE "publishers" ALTER COLUMN "created_at" SET DEFAULT now();--> statement-breakpoint
+ALTER TABLE "publishers" ALTER COLUMN "updated_at" SET DEFAULT now();--> statement-breakpoint
+ALTER TABLE "user_roles" ALTER COLUMN "created_at" SET DEFAULT now();--> statement-breakpoint
+ALTER TABLE "user_roles" ALTER COLUMN "updated_at" SET DEFAULT now();--> statement-breakpoint
+ALTER TABLE "users" ALTER COLUMN "created_at" SET DEFAULT now();--> statement-breakpoint
+ALTER TABLE "users" ALTER COLUMN "updated_at" SET DEFAULT now();--> statement-breakpoint
+ALTER TABLE "wishlist_items" ALTER COLUMN "created_at" SET DEFAULT now();--> statement-breakpoint
+ALTER TABLE "wishlist_items" ALTER COLUMN "updated_at" SET DEFAULT now();--> statement-breakpoint
+ALTER TABLE "wishlists" ALTER COLUMN "created_at" SET DEFAULT now();--> statement-breakpoint
+ALTER TABLE "wishlists" ALTER COLUMN "updated_at" SET DEFAULT now();--> statement-breakpoint
+ALTER TABLE "games" ADD COLUMN "text_searchable_index" "tsvector";
\ No newline at end of file
diff --git a/drizzle/0003_thick_tinkerer.sql b/drizzle/0003_thick_tinkerer.sql
new file mode 100644
index 0000000..9aa98ab
--- /dev/null
+++ b/drizzle/0003_thick_tinkerer.sql
@@ -0,0 +1 @@
+CREATE INDEX IF NOT EXISTS "text_searchable_idx" ON "games" ("text_searchable_index");
\ No newline at end of file
diff --git a/drizzle/meta/0002_snapshot.json b/drizzle/meta/0002_snapshot.json
new file mode 100644
index 0000000..696c724
--- /dev/null
+++ b/drizzle/meta/0002_snapshot.json
@@ -0,0 +1,1055 @@
+{
+ "id": "efbcf295-4499-4d80-9026-a0d8627b0e35",
+ "prevId": "99b2283f-80a5-44c6-be3b-b1fcd2a5818d",
+ "version": "5",
+ "dialect": "pg",
+ "tables": {
+ "artists": {
+ "name": "artists",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "slug": {
+ "name": "slug",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "external_id": {
+ "name": "external_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {}
+ },
+ "artists_to_games": {
+ "name": "artists_to_games",
+ "schema": "",
+ "columns": {
+ "artist_id": {
+ "name": "artist_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "game_id": {
+ "name": "game_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {}
+ },
+ "categories": {
+ "name": "categories",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "slug": {
+ "name": "slug",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "external_id": {
+ "name": "external_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {}
+ },
+ "categories_to_games": {
+ "name": "categories_to_games",
+ "schema": "",
+ "columns": {
+ "category_id": {
+ "name": "category_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "game_id": {
+ "name": "game_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {}
+ },
+ "collection_items": {
+ "name": "collection_items",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "collection_id": {
+ "name": "collection_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "game_id": {
+ "name": "game_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ }
+ },
+ "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": {},
+ "uniqueConstraints": {}
+ },
+ "collections": {
+ "name": "collections",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "user_id": {
+ "name": "user_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ }
+ },
+ "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": {},
+ "uniqueConstraints": {}
+ },
+ "designers": {
+ "name": "designers",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "slug": {
+ "name": "slug",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "external_id": {
+ "name": "external_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {}
+ },
+ "designers_to_games": {
+ "name": "designers_to_games",
+ "schema": "",
+ "columns": {
+ "designer_id": {
+ "name": "designer_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "game_id": {
+ "name": "game_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {}
+ },
+ "expansions": {
+ "name": "expansions",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "base_game_id": {
+ "name": "base_game_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "game_id": {
+ "name": "game_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ }
+ },
+ "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": {},
+ "uniqueConstraints": {}
+ },
+ "games": {
+ "name": "games",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "slug": {
+ "name": "slug",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "description": {
+ "name": "description",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "year_published": {
+ "name": "year_published",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "min_players": {
+ "name": "min_players",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "max_players": {
+ "name": "max_players",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "playtime": {
+ "name": "playtime",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "min_playtime": {
+ "name": "min_playtime",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "max_playtime": {
+ "name": "max_playtime",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "min_age": {
+ "name": "min_age",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "image_url": {
+ "name": "image_url",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "thumb_url": {
+ "name": "thumb_url",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "url": {
+ "name": "url",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "text_searchable_index": {
+ "name": "text_searchable_index",
+ "type": "tsvector",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "external_id": {
+ "name": "external_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "last_sync_at": {
+ "name": "last_sync_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {
+ "games_external_id_unique": {
+ "name": "games_external_id_unique",
+ "nullsNotDistinct": false,
+ "columns": [
+ "external_id"
+ ]
+ }
+ }
+ },
+ "mechanics": {
+ "name": "mechanics",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "slug": {
+ "name": "slug",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "external_id": {
+ "name": "external_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {}
+ },
+ "mechanics_to_games": {
+ "name": "mechanics_to_games",
+ "schema": "",
+ "columns": {
+ "mechanic_id": {
+ "name": "mechanic_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "game_id": {
+ "name": "game_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {}
+ },
+ "publishers": {
+ "name": "publishers",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "slug": {
+ "name": "slug",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "external_id": {
+ "name": "external_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {}
+ },
+ "publishers_to_games": {
+ "name": "publishers_to_games",
+ "schema": "",
+ "columns": {
+ "publisher_id": {
+ "name": "publisher_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "game_id": {
+ "name": "game_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {}
+ },
+ "roles": {
+ "name": "roles",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {
+ "roles_name_unique": {
+ "name": "roles_name_unique",
+ "nullsNotDistinct": false,
+ "columns": [
+ "name"
+ ]
+ }
+ }
+ },
+ "sessions": {
+ "name": "sessions",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "user_id": {
+ "name": "user_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "expires_at": {
+ "name": "expires_at",
+ "type": "timestamp with time zone",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "ip_country": {
+ "name": "ip_country",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "ip_address": {
+ "name": "ip_address",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": 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": "no action",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {}
+ },
+ "user_roles": {
+ "name": "user_roles",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "user_id": {
+ "name": "user_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "role_id": {
+ "name": "role_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ }
+ },
+ "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": {},
+ "uniqueConstraints": {}
+ },
+ "users": {
+ "name": "users",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "username": {
+ "name": "username",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "hashed_password": {
+ "name": "hashed_password",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "email": {
+ "name": "email",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "first_name": {
+ "name": "first_name",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "last_name": {
+ "name": "last_name",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "verified": {
+ "name": "verified",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": false,
+ "default": false
+ },
+ "receive_email": {
+ "name": "receive_email",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": false,
+ "default": false
+ },
+ "theme": {
+ "name": "theme",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "'system'"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {
+ "users_username_unique": {
+ "name": "users_username_unique",
+ "nullsNotDistinct": false,
+ "columns": [
+ "username"
+ ]
+ },
+ "users_email_unique": {
+ "name": "users_email_unique",
+ "nullsNotDistinct": false,
+ "columns": [
+ "email"
+ ]
+ }
+ }
+ },
+ "wishlist_items": {
+ "name": "wishlist_items",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "wishlist_id": {
+ "name": "wishlist_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "game_id": {
+ "name": "game_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ }
+ },
+ "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": {},
+ "uniqueConstraints": {}
+ },
+ "wishlists": {
+ "name": "wishlists",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "user_id": {
+ "name": "user_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ }
+ },
+ "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": {},
+ "uniqueConstraints": {}
+ }
+ },
+ "enums": {},
+ "schemas": {},
+ "_meta": {
+ "columns": {},
+ "schemas": {},
+ "tables": {}
+ }
+}
\ No newline at end of file
diff --git a/drizzle/meta/0003_snapshot.json b/drizzle/meta/0003_snapshot.json
new file mode 100644
index 0000000..1d4401d
--- /dev/null
+++ b/drizzle/meta/0003_snapshot.json
@@ -0,0 +1,1063 @@
+{
+ "id": "425a2ccd-b74a-4e51-8c80-1a6387cc6c5d",
+ "prevId": "efbcf295-4499-4d80-9026-a0d8627b0e35",
+ "version": "5",
+ "dialect": "pg",
+ "tables": {
+ "artists": {
+ "name": "artists",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "slug": {
+ "name": "slug",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "external_id": {
+ "name": "external_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {}
+ },
+ "artists_to_games": {
+ "name": "artists_to_games",
+ "schema": "",
+ "columns": {
+ "artist_id": {
+ "name": "artist_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "game_id": {
+ "name": "game_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {}
+ },
+ "categories": {
+ "name": "categories",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "slug": {
+ "name": "slug",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "external_id": {
+ "name": "external_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {}
+ },
+ "categories_to_games": {
+ "name": "categories_to_games",
+ "schema": "",
+ "columns": {
+ "category_id": {
+ "name": "category_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "game_id": {
+ "name": "game_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {}
+ },
+ "collection_items": {
+ "name": "collection_items",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "collection_id": {
+ "name": "collection_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "game_id": {
+ "name": "game_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ }
+ },
+ "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": {},
+ "uniqueConstraints": {}
+ },
+ "collections": {
+ "name": "collections",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "user_id": {
+ "name": "user_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ }
+ },
+ "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": {},
+ "uniqueConstraints": {}
+ },
+ "designers": {
+ "name": "designers",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "slug": {
+ "name": "slug",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "external_id": {
+ "name": "external_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {}
+ },
+ "designers_to_games": {
+ "name": "designers_to_games",
+ "schema": "",
+ "columns": {
+ "designer_id": {
+ "name": "designer_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "game_id": {
+ "name": "game_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {}
+ },
+ "expansions": {
+ "name": "expansions",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "base_game_id": {
+ "name": "base_game_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "game_id": {
+ "name": "game_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ }
+ },
+ "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": {},
+ "uniqueConstraints": {}
+ },
+ "games": {
+ "name": "games",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "slug": {
+ "name": "slug",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "description": {
+ "name": "description",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "year_published": {
+ "name": "year_published",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "min_players": {
+ "name": "min_players",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "max_players": {
+ "name": "max_players",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "playtime": {
+ "name": "playtime",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "min_playtime": {
+ "name": "min_playtime",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "max_playtime": {
+ "name": "max_playtime",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "min_age": {
+ "name": "min_age",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "image_url": {
+ "name": "image_url",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "thumb_url": {
+ "name": "thumb_url",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "url": {
+ "name": "url",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "text_searchable_index": {
+ "name": "text_searchable_index",
+ "type": "tsvector",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "external_id": {
+ "name": "external_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "last_sync_at": {
+ "name": "last_sync_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "text_searchable_idx": {
+ "name": "text_searchable_idx",
+ "columns": [
+ "text_searchable_index"
+ ],
+ "isUnique": false
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {
+ "games_external_id_unique": {
+ "name": "games_external_id_unique",
+ "nullsNotDistinct": false,
+ "columns": [
+ "external_id"
+ ]
+ }
+ }
+ },
+ "mechanics": {
+ "name": "mechanics",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "slug": {
+ "name": "slug",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "external_id": {
+ "name": "external_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {}
+ },
+ "mechanics_to_games": {
+ "name": "mechanics_to_games",
+ "schema": "",
+ "columns": {
+ "mechanic_id": {
+ "name": "mechanic_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "game_id": {
+ "name": "game_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {}
+ },
+ "publishers": {
+ "name": "publishers",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "slug": {
+ "name": "slug",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "external_id": {
+ "name": "external_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {}
+ },
+ "publishers_to_games": {
+ "name": "publishers_to_games",
+ "schema": "",
+ "columns": {
+ "publisher_id": {
+ "name": "publisher_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "game_id": {
+ "name": "game_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {}
+ },
+ "roles": {
+ "name": "roles",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {
+ "roles_name_unique": {
+ "name": "roles_name_unique",
+ "nullsNotDistinct": false,
+ "columns": [
+ "name"
+ ]
+ }
+ }
+ },
+ "sessions": {
+ "name": "sessions",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "user_id": {
+ "name": "user_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "expires_at": {
+ "name": "expires_at",
+ "type": "timestamp with time zone",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "ip_country": {
+ "name": "ip_country",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "ip_address": {
+ "name": "ip_address",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": 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": "no action",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {}
+ },
+ "user_roles": {
+ "name": "user_roles",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "user_id": {
+ "name": "user_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "role_id": {
+ "name": "role_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ }
+ },
+ "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": {},
+ "uniqueConstraints": {}
+ },
+ "users": {
+ "name": "users",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "username": {
+ "name": "username",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "hashed_password": {
+ "name": "hashed_password",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "email": {
+ "name": "email",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "first_name": {
+ "name": "first_name",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "last_name": {
+ "name": "last_name",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "verified": {
+ "name": "verified",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": false,
+ "default": false
+ },
+ "receive_email": {
+ "name": "receive_email",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": false,
+ "default": false
+ },
+ "theme": {
+ "name": "theme",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "'system'"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {
+ "users_username_unique": {
+ "name": "users_username_unique",
+ "nullsNotDistinct": false,
+ "columns": [
+ "username"
+ ]
+ },
+ "users_email_unique": {
+ "name": "users_email_unique",
+ "nullsNotDistinct": false,
+ "columns": [
+ "email"
+ ]
+ }
+ }
+ },
+ "wishlist_items": {
+ "name": "wishlist_items",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "wishlist_id": {
+ "name": "wishlist_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "game_id": {
+ "name": "game_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ }
+ },
+ "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": {},
+ "uniqueConstraints": {}
+ },
+ "wishlists": {
+ "name": "wishlists",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "user_id": {
+ "name": "user_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp (6) with time zone",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "now()"
+ }
+ },
+ "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": {},
+ "uniqueConstraints": {}
+ }
+ },
+ "enums": {},
+ "schemas": {},
+ "_meta": {
+ "columns": {},
+ "schemas": {},
+ "tables": {}
+ }
+}
\ No newline at end of file
diff --git a/drizzle/meta/_journal.json b/drizzle/meta/_journal.json
index 8851f62..24e784f 100644
--- a/drizzle/meta/_journal.json
+++ b/drizzle/meta/_journal.json
@@ -15,6 +15,20 @@
"when": 1707438055782,
"tag": "0001_giant_tomorrow_man",
"breakpoints": true
+ },
+ {
+ "idx": 2,
+ "version": "5",
+ "when": 1707524139123,
+ "tag": "0002_sour_silverclaw",
+ "breakpoints": true
+ },
+ {
+ "idx": 3,
+ "version": "5",
+ "when": 1707526808124,
+ "tag": "0003_thick_tinkerer",
+ "breakpoints": true
}
]
}
\ No newline at end of file
diff --git a/package.json b/package.json
index 9279550..354256d 100644
--- a/package.json
+++ b/package.json
@@ -34,7 +34,7 @@
"@sveltejs/kit": "^2.5.0",
"@sveltejs/vite-plugin-svelte": "^3.0.2",
"@types/cookie": "^0.6.0",
- "@types/node": "^20.11.16",
+ "@types/node": "^20.11.17",
"@typescript-eslint/eslint-plugin": "^6.21.0",
"@typescript-eslint/parser": "^6.21.0",
"autoprefixer": "^10.4.17",
@@ -47,11 +47,11 @@
"just-debounce-it": "^3.2.0",
"postcss": "^8.4.35",
"postcss-import": "^16.0.0",
- "postcss-load-config": "^5.0.2",
+ "postcss-load-config": "^5.0.3",
"postcss-preset-env": "^9.3.0",
"prettier": "^3.2.5",
"prettier-plugin-svelte": "^3.1.2",
- "prisma": "^5.8.1",
+ "prisma": "^5.9.1",
"sass": "^1.70.0",
"satori": "^0.10.13",
"satori-html": "^0.3.2",
@@ -67,7 +67,7 @@
"tslib": "^2.6.1",
"tsx": "^4.7.0",
"typescript": "^5.3.3",
- "vite": "^5.0.12",
+ "vite": "^5.1.1",
"vitest": "^1.2.2",
"zod": "^3.22.4"
},
@@ -85,8 +85,8 @@
"@lukeed/uuid": "^2.0.1",
"@neondatabase/serverless": "^0.8.1",
"@paralleldrive/cuid2": "^2.2.2",
- "@planetscale/database": "^1.15.0",
- "@prisma/client": "^5.8.1",
+ "@planetscale/database": "^1.16.0",
+ "@prisma/client": "^5.9.1",
"@sentry/sveltekit": "^7.100.1",
"@sveltejs/adapter-vercel": "^5.1.0",
"@types/feather-icons": "^4.29.4",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 379cd4a..5c2c3a8 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -19,7 +19,7 @@ dependencies:
version: 1.0.1(lucia@3.0.1)
'@lucia-auth/adapter-prisma':
specifier: 4.0.0
- version: 4.0.0(@prisma/client@5.8.1)(lucia@3.0.1)
+ version: 4.0.0(@prisma/client@5.9.1)(lucia@3.0.1)
'@lukeed/uuid':
specifier: ^2.0.1
version: 2.0.1
@@ -30,11 +30,11 @@ dependencies:
specifier: ^2.2.2
version: 2.2.2
'@planetscale/database':
- specifier: ^1.15.0
- version: 1.15.0
+ specifier: ^1.16.0
+ version: 1.16.0
'@prisma/client':
- specifier: ^5.8.1
- version: 5.8.1(prisma@5.8.1)
+ specifier: ^5.9.1
+ version: 5.9.1(prisma@5.9.1)
'@sentry/sveltekit':
specifier: ^7.100.1
version: 7.100.1(@sveltejs/kit@2.5.0)(svelte@4.2.10)
@@ -64,7 +64,7 @@ dependencies:
version: 0.6.0
drizzle-orm:
specifier: ^0.29.3
- version: 0.29.3(@neondatabase/serverless@0.8.1)(@planetscale/database@1.15.0)(mysql2@3.9.1)(pg@8.11.3)(postgres@3.4.3)
+ version: 0.29.3(@neondatabase/serverless@0.8.1)(@planetscale/database@1.16.0)(mysql2@3.9.1)(pg@8.11.3)(postgres@3.4.3)
feather-icons:
specifier: ^4.29.1
version: 4.29.1
@@ -150,16 +150,16 @@ devDependencies:
version: 0.1.8(svelte@4.2.10)
'@sveltejs/kit':
specifier: ^2.5.0
- version: 2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.10)(vite@5.0.12)
+ version: 2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.10)(vite@5.1.1)
'@sveltejs/vite-plugin-svelte':
specifier: ^3.0.2
- version: 3.0.2(svelte@4.2.10)(vite@5.0.12)
+ version: 3.0.2(svelte@4.2.10)(vite@5.1.1)
'@types/cookie':
specifier: ^0.6.0
version: 0.6.0
'@types/node':
- specifier: ^20.11.16
- version: 20.11.16
+ specifier: ^20.11.17
+ version: 20.11.17
'@typescript-eslint/eslint-plugin':
specifier: ^6.21.0
version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3)
@@ -197,8 +197,8 @@ devDependencies:
specifier: ^16.0.0
version: 16.0.0(postcss@8.4.35)
postcss-load-config:
- specifier: ^5.0.2
- version: 5.0.2(postcss@8.4.35)
+ specifier: ^5.0.3
+ version: 5.0.3(postcss@8.4.35)
postcss-preset-env:
specifier: ^9.3.0
version: 9.3.0(postcss@8.4.35)
@@ -209,8 +209,8 @@ devDependencies:
specifier: ^3.1.2
version: 3.1.2(prettier@3.2.5)(svelte@4.2.10)
prisma:
- specifier: ^5.8.1
- version: 5.8.1
+ specifier: ^5.9.1
+ version: 5.9.1
sass:
specifier: ^1.70.0
version: 1.70.0
@@ -225,13 +225,13 @@ devDependencies:
version: 4.2.10
svelte-check:
specifier: ^3.6.4
- version: 3.6.4(postcss-load-config@5.0.2)(postcss@8.4.35)(sass@1.70.0)(svelte@4.2.10)
+ version: 3.6.4(postcss-load-config@5.0.3)(postcss@8.4.35)(sass@1.70.0)(svelte@4.2.10)
svelte-meta-tags:
specifier: ^3.1.0
version: 3.1.0(svelte@4.2.10)(typescript@5.3.3)
svelte-preprocess:
specifier: ^5.1.3
- version: 5.1.3(postcss-load-config@5.0.2)(postcss@8.4.35)(sass@1.70.0)(svelte@4.2.10)(typescript@5.3.3)
+ version: 5.1.3(postcss-load-config@5.0.3)(postcss@8.4.35)(sass@1.70.0)(svelte@4.2.10)(typescript@5.3.3)
svelte-sequential-preprocessor:
specifier: ^2.0.1
version: 2.0.1
@@ -246,7 +246,7 @@ devDependencies:
version: 3.4.1(ts-node@10.9.2)
ts-node:
specifier: ^10.9.2
- version: 10.9.2(@types/node@20.11.16)(typescript@5.3.3)
+ version: 10.9.2(@types/node@20.11.17)(typescript@5.3.3)
tslib:
specifier: ^2.6.1
version: 2.6.2
@@ -257,11 +257,11 @@ devDependencies:
specifier: ^5.3.3
version: 5.3.3
vite:
- specifier: ^5.0.12
- version: 5.0.12(@types/node@20.11.16)(sass@1.70.0)
+ specifier: ^5.1.1
+ version: 5.1.1(@types/node@20.11.17)(sass@1.70.0)
vitest:
specifier: ^1.2.2
- version: 1.2.2(@types/node@20.11.16)(sass@1.70.0)
+ version: 1.2.2(@types/node@20.11.17)(sass@1.70.0)
zod:
specifier: ^3.22.4
version: 3.22.4
@@ -756,16 +756,16 @@ packages:
get-tsconfig: 4.7.2
dev: true
- /@esbuild/aix-ppc64@0.19.10:
- resolution: {integrity: sha512-Q+mk96KJ+FZ30h9fsJl+67IjNJm3x2eX+GBWGmocAKgzp27cowCOOqSdscX80s0SpdFXZnIv/+1xD1EctFx96Q==}
+ /@esbuild/aix-ppc64@0.19.11:
+ resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==}
engines: {node: '>=12'}
cpu: [ppc64]
os: [aix]
requiresBuild: true
optional: true
- /@esbuild/aix-ppc64@0.19.11:
- resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==}
+ /@esbuild/aix-ppc64@0.19.12:
+ resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==}
engines: {node: '>=12'}
cpu: [ppc64]
os: [aix]
@@ -781,16 +781,16 @@ packages:
dev: true
optional: true
- /@esbuild/android-arm64@0.19.10:
- resolution: {integrity: sha512-1X4CClKhDgC3by7k8aOWZeBXQX8dHT5QAMCAQDArCLaYfkppoARvh0fit3X2Qs+MXDngKcHv6XXyQCpY0hkK1Q==}
+ /@esbuild/android-arm64@0.19.11:
+ resolution: {integrity: sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==}
engines: {node: '>=12'}
cpu: [arm64]
os: [android]
requiresBuild: true
optional: true
- /@esbuild/android-arm64@0.19.11:
- resolution: {integrity: sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==}
+ /@esbuild/android-arm64@0.19.12:
+ resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==}
engines: {node: '>=12'}
cpu: [arm64]
os: [android]
@@ -806,16 +806,16 @@ packages:
dev: true
optional: true
- /@esbuild/android-arm@0.19.10:
- resolution: {integrity: sha512-7W0bK7qfkw1fc2viBfrtAEkDKHatYfHzr/jKAHNr9BvkYDXPcC6bodtm8AyLJNNuqClLNaeTLuwURt4PRT9d7w==}
+ /@esbuild/android-arm@0.19.11:
+ resolution: {integrity: sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==}
engines: {node: '>=12'}
cpu: [arm]
os: [android]
requiresBuild: true
optional: true
- /@esbuild/android-arm@0.19.11:
- resolution: {integrity: sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==}
+ /@esbuild/android-arm@0.19.12:
+ resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==}
engines: {node: '>=12'}
cpu: [arm]
os: [android]
@@ -831,16 +831,16 @@ packages:
dev: true
optional: true
- /@esbuild/android-x64@0.19.10:
- resolution: {integrity: sha512-O/nO/g+/7NlitUxETkUv/IvADKuZXyH4BHf/g/7laqKC4i/7whLpB0gvpPc2zpF0q9Q6FXS3TS75QHac9MvVWw==}
+ /@esbuild/android-x64@0.19.11:
+ resolution: {integrity: sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==}
engines: {node: '>=12'}
cpu: [x64]
os: [android]
requiresBuild: true
optional: true
- /@esbuild/android-x64@0.19.11:
- resolution: {integrity: sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==}
+ /@esbuild/android-x64@0.19.12:
+ resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==}
engines: {node: '>=12'}
cpu: [x64]
os: [android]
@@ -856,16 +856,16 @@ packages:
dev: true
optional: true
- /@esbuild/darwin-arm64@0.19.10:
- resolution: {integrity: sha512-YSRRs2zOpwypck+6GL3wGXx2gNP7DXzetmo5pHXLrY/VIMsS59yKfjPizQ4lLt5vEI80M41gjm2BxrGZ5U+VMA==}
+ /@esbuild/darwin-arm64@0.19.11:
+ resolution: {integrity: sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==}
engines: {node: '>=12'}
cpu: [arm64]
os: [darwin]
requiresBuild: true
optional: true
- /@esbuild/darwin-arm64@0.19.11:
- resolution: {integrity: sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==}
+ /@esbuild/darwin-arm64@0.19.12:
+ resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==}
engines: {node: '>=12'}
cpu: [arm64]
os: [darwin]
@@ -881,16 +881,16 @@ packages:
dev: true
optional: true
- /@esbuild/darwin-x64@0.19.10:
- resolution: {integrity: sha512-alfGtT+IEICKtNE54hbvPg13xGBe4GkVxyGWtzr+yHO7HIiRJppPDhOKq3zstTcVf8msXb/t4eavW3jCDpMSmA==}
+ /@esbuild/darwin-x64@0.19.11:
+ resolution: {integrity: sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==}
engines: {node: '>=12'}
cpu: [x64]
os: [darwin]
requiresBuild: true
optional: true
- /@esbuild/darwin-x64@0.19.11:
- resolution: {integrity: sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==}
+ /@esbuild/darwin-x64@0.19.12:
+ resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==}
engines: {node: '>=12'}
cpu: [x64]
os: [darwin]
@@ -906,16 +906,16 @@ packages:
dev: true
optional: true
- /@esbuild/freebsd-arm64@0.19.10:
- resolution: {integrity: sha512-dMtk1wc7FSH8CCkE854GyGuNKCewlh+7heYP/sclpOG6Cectzk14qdUIY5CrKDbkA/OczXq9WesqnPl09mj5dg==}
+ /@esbuild/freebsd-arm64@0.19.11:
+ resolution: {integrity: sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==}
engines: {node: '>=12'}
cpu: [arm64]
os: [freebsd]
requiresBuild: true
optional: true
- /@esbuild/freebsd-arm64@0.19.11:
- resolution: {integrity: sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==}
+ /@esbuild/freebsd-arm64@0.19.12:
+ resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==}
engines: {node: '>=12'}
cpu: [arm64]
os: [freebsd]
@@ -931,16 +931,16 @@ packages:
dev: true
optional: true
- /@esbuild/freebsd-x64@0.19.10:
- resolution: {integrity: sha512-G5UPPspryHu1T3uX8WiOEUa6q6OlQh6gNl4CO4Iw5PS+Kg5bVggVFehzXBJY6X6RSOMS8iXDv2330VzaObm4Ag==}
+ /@esbuild/freebsd-x64@0.19.11:
+ resolution: {integrity: sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==}
engines: {node: '>=12'}
cpu: [x64]
os: [freebsd]
requiresBuild: true
optional: true
- /@esbuild/freebsd-x64@0.19.11:
- resolution: {integrity: sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==}
+ /@esbuild/freebsd-x64@0.19.12:
+ resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==}
engines: {node: '>=12'}
cpu: [x64]
os: [freebsd]
@@ -956,16 +956,16 @@ packages:
dev: true
optional: true
- /@esbuild/linux-arm64@0.19.10:
- resolution: {integrity: sha512-QxaouHWZ+2KWEj7cGJmvTIHVALfhpGxo3WLmlYfJ+dA5fJB6lDEIg+oe/0//FuyVHuS3l79/wyBxbHr0NgtxJQ==}
+ /@esbuild/linux-arm64@0.19.11:
+ resolution: {integrity: sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==}
engines: {node: '>=12'}
cpu: [arm64]
os: [linux]
requiresBuild: true
optional: true
- /@esbuild/linux-arm64@0.19.11:
- resolution: {integrity: sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==}
+ /@esbuild/linux-arm64@0.19.12:
+ resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==}
engines: {node: '>=12'}
cpu: [arm64]
os: [linux]
@@ -981,16 +981,16 @@ packages:
dev: true
optional: true
- /@esbuild/linux-arm@0.19.10:
- resolution: {integrity: sha512-j6gUW5aAaPgD416Hk9FHxn27On28H4eVI9rJ4az7oCGTFW48+LcgNDBN+9f8rKZz7EEowo889CPKyeaD0iw9Kg==}
+ /@esbuild/linux-arm@0.19.11:
+ resolution: {integrity: sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==}
engines: {node: '>=12'}
cpu: [arm]
os: [linux]
requiresBuild: true
optional: true
- /@esbuild/linux-arm@0.19.11:
- resolution: {integrity: sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==}
+ /@esbuild/linux-arm@0.19.12:
+ resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==}
engines: {node: '>=12'}
cpu: [arm]
os: [linux]
@@ -1006,16 +1006,16 @@ packages:
dev: true
optional: true
- /@esbuild/linux-ia32@0.19.10:
- resolution: {integrity: sha512-4ub1YwXxYjj9h1UIZs2hYbnTZBtenPw5NfXCRgEkGb0b6OJ2gpkMvDqRDYIDRjRdWSe/TBiZltm3Y3Q8SN1xNg==}
+ /@esbuild/linux-ia32@0.19.11:
+ resolution: {integrity: sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==}
engines: {node: '>=12'}
cpu: [ia32]
os: [linux]
requiresBuild: true
optional: true
- /@esbuild/linux-ia32@0.19.11:
- resolution: {integrity: sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==}
+ /@esbuild/linux-ia32@0.19.12:
+ resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==}
engines: {node: '>=12'}
cpu: [ia32]
os: [linux]
@@ -1031,16 +1031,16 @@ packages:
dev: true
optional: true
- /@esbuild/linux-loong64@0.19.10:
- resolution: {integrity: sha512-lo3I9k+mbEKoxtoIbM0yC/MZ1i2wM0cIeOejlVdZ3D86LAcFXFRdeuZmh91QJvUTW51bOK5W2BznGNIl4+mDaA==}
+ /@esbuild/linux-loong64@0.19.11:
+ resolution: {integrity: sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==}
engines: {node: '>=12'}
cpu: [loong64]
os: [linux]
requiresBuild: true
optional: true
- /@esbuild/linux-loong64@0.19.11:
- resolution: {integrity: sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==}
+ /@esbuild/linux-loong64@0.19.12:
+ resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==}
engines: {node: '>=12'}
cpu: [loong64]
os: [linux]
@@ -1056,16 +1056,16 @@ packages:
dev: true
optional: true
- /@esbuild/linux-mips64el@0.19.10:
- resolution: {integrity: sha512-J4gH3zhHNbdZN0Bcr1QUGVNkHTdpijgx5VMxeetSk6ntdt+vR1DqGmHxQYHRmNb77tP6GVvD+K0NyO4xjd7y4A==}
+ /@esbuild/linux-mips64el@0.19.11:
+ resolution: {integrity: sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==}
engines: {node: '>=12'}
cpu: [mips64el]
os: [linux]
requiresBuild: true
optional: true
- /@esbuild/linux-mips64el@0.19.11:
- resolution: {integrity: sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==}
+ /@esbuild/linux-mips64el@0.19.12:
+ resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==}
engines: {node: '>=12'}
cpu: [mips64el]
os: [linux]
@@ -1081,16 +1081,16 @@ packages:
dev: true
optional: true
- /@esbuild/linux-ppc64@0.19.10:
- resolution: {integrity: sha512-tgT/7u+QhV6ge8wFMzaklOY7KqiyitgT1AUHMApau32ZlvTB/+efeCtMk4eXS+uEymYK249JsoiklZN64xt6oQ==}
+ /@esbuild/linux-ppc64@0.19.11:
+ resolution: {integrity: sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==}
engines: {node: '>=12'}
cpu: [ppc64]
os: [linux]
requiresBuild: true
optional: true
- /@esbuild/linux-ppc64@0.19.11:
- resolution: {integrity: sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==}
+ /@esbuild/linux-ppc64@0.19.12:
+ resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==}
engines: {node: '>=12'}
cpu: [ppc64]
os: [linux]
@@ -1106,16 +1106,16 @@ packages:
dev: true
optional: true
- /@esbuild/linux-riscv64@0.19.10:
- resolution: {integrity: sha512-0f/spw0PfBMZBNqtKe5FLzBDGo0SKZKvMl5PHYQr3+eiSscfJ96XEknCe+JoOayybWUFQbcJTrk946i3j9uYZA==}
+ /@esbuild/linux-riscv64@0.19.11:
+ resolution: {integrity: sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==}
engines: {node: '>=12'}
cpu: [riscv64]
os: [linux]
requiresBuild: true
optional: true
- /@esbuild/linux-riscv64@0.19.11:
- resolution: {integrity: sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==}
+ /@esbuild/linux-riscv64@0.19.12:
+ resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==}
engines: {node: '>=12'}
cpu: [riscv64]
os: [linux]
@@ -1131,16 +1131,16 @@ packages:
dev: true
optional: true
- /@esbuild/linux-s390x@0.19.10:
- resolution: {integrity: sha512-pZFe0OeskMHzHa9U38g+z8Yx5FNCLFtUnJtQMpwhS+r4S566aK2ci3t4NCP4tjt6d5j5uo4h7tExZMjeKoehAA==}
+ /@esbuild/linux-s390x@0.19.11:
+ resolution: {integrity: sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==}
engines: {node: '>=12'}
cpu: [s390x]
os: [linux]
requiresBuild: true
optional: true
- /@esbuild/linux-s390x@0.19.11:
- resolution: {integrity: sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==}
+ /@esbuild/linux-s390x@0.19.12:
+ resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==}
engines: {node: '>=12'}
cpu: [s390x]
os: [linux]
@@ -1156,16 +1156,16 @@ packages:
dev: true
optional: true
- /@esbuild/linux-x64@0.19.10:
- resolution: {integrity: sha512-SpYNEqg/6pZYoc+1zLCjVOYvxfZVZj6w0KROZ3Fje/QrM3nfvT2llI+wmKSrWuX6wmZeTapbarvuNNK/qepSgA==}
+ /@esbuild/linux-x64@0.19.11:
+ resolution: {integrity: sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==}
engines: {node: '>=12'}
cpu: [x64]
os: [linux]
requiresBuild: true
optional: true
- /@esbuild/linux-x64@0.19.11:
- resolution: {integrity: sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==}
+ /@esbuild/linux-x64@0.19.12:
+ resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==}
engines: {node: '>=12'}
cpu: [x64]
os: [linux]
@@ -1181,16 +1181,16 @@ packages:
dev: true
optional: true
- /@esbuild/netbsd-x64@0.19.10:
- resolution: {integrity: sha512-ACbZ0vXy9zksNArWlk2c38NdKg25+L9pr/mVaj9SUq6lHZu/35nx2xnQVRGLrC1KKQqJKRIB0q8GspiHI3J80Q==}
+ /@esbuild/netbsd-x64@0.19.11:
+ resolution: {integrity: sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==}
engines: {node: '>=12'}
cpu: [x64]
os: [netbsd]
requiresBuild: true
optional: true
- /@esbuild/netbsd-x64@0.19.11:
- resolution: {integrity: sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==}
+ /@esbuild/netbsd-x64@0.19.12:
+ resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==}
engines: {node: '>=12'}
cpu: [x64]
os: [netbsd]
@@ -1206,16 +1206,16 @@ packages:
dev: true
optional: true
- /@esbuild/openbsd-x64@0.19.10:
- resolution: {integrity: sha512-PxcgvjdSjtgPMiPQrM3pwSaG4kGphP+bLSb+cihuP0LYdZv1epbAIecHVl5sD3npkfYBZ0ZnOjR878I7MdJDFg==}
+ /@esbuild/openbsd-x64@0.19.11:
+ resolution: {integrity: sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==}
engines: {node: '>=12'}
cpu: [x64]
os: [openbsd]
requiresBuild: true
optional: true
- /@esbuild/openbsd-x64@0.19.11:
- resolution: {integrity: sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==}
+ /@esbuild/openbsd-x64@0.19.12:
+ resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==}
engines: {node: '>=12'}
cpu: [x64]
os: [openbsd]
@@ -1231,16 +1231,16 @@ packages:
dev: true
optional: true
- /@esbuild/sunos-x64@0.19.10:
- resolution: {integrity: sha512-ZkIOtrRL8SEJjr+VHjmW0znkPs+oJXhlJbNwfI37rvgeMtk3sxOQevXPXjmAPZPigVTncvFqLMd+uV0IBSEzqA==}
+ /@esbuild/sunos-x64@0.19.11:
+ resolution: {integrity: sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==}
engines: {node: '>=12'}
cpu: [x64]
os: [sunos]
requiresBuild: true
optional: true
- /@esbuild/sunos-x64@0.19.11:
- resolution: {integrity: sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==}
+ /@esbuild/sunos-x64@0.19.12:
+ resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==}
engines: {node: '>=12'}
cpu: [x64]
os: [sunos]
@@ -1256,16 +1256,16 @@ packages:
dev: true
optional: true
- /@esbuild/win32-arm64@0.19.10:
- resolution: {integrity: sha512-+Sa4oTDbpBfGpl3Hn3XiUe4f8TU2JF7aX8cOfqFYMMjXp6ma6NJDztl5FDG8Ezx0OjwGikIHw+iA54YLDNNVfw==}
+ /@esbuild/win32-arm64@0.19.11:
+ resolution: {integrity: sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==}
engines: {node: '>=12'}
cpu: [arm64]
os: [win32]
requiresBuild: true
optional: true
- /@esbuild/win32-arm64@0.19.11:
- resolution: {integrity: sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==}
+ /@esbuild/win32-arm64@0.19.12:
+ resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==}
engines: {node: '>=12'}
cpu: [arm64]
os: [win32]
@@ -1281,16 +1281,16 @@ packages:
dev: true
optional: true
- /@esbuild/win32-ia32@0.19.10:
- resolution: {integrity: sha512-EOGVLK1oWMBXgfttJdPHDTiivYSjX6jDNaATeNOaCOFEVcfMjtbx7WVQwPSE1eIfCp/CaSF2nSrDtzc4I9f8TQ==}
+ /@esbuild/win32-ia32@0.19.11:
+ resolution: {integrity: sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==}
engines: {node: '>=12'}
cpu: [ia32]
os: [win32]
requiresBuild: true
optional: true
- /@esbuild/win32-ia32@0.19.11:
- resolution: {integrity: sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==}
+ /@esbuild/win32-ia32@0.19.12:
+ resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==}
engines: {node: '>=12'}
cpu: [ia32]
os: [win32]
@@ -1306,16 +1306,16 @@ packages:
dev: true
optional: true
- /@esbuild/win32-x64@0.19.10:
- resolution: {integrity: sha512-whqLG6Sc70AbU73fFYvuYzaE4MNMBIlR1Y/IrUeOXFrWHxBEjjbZaQ3IXIQS8wJdAzue2GwYZCjOrgrU1oUHoA==}
+ /@esbuild/win32-x64@0.19.11:
+ resolution: {integrity: sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==}
engines: {node: '>=12'}
cpu: [x64]
os: [win32]
requiresBuild: true
optional: true
- /@esbuild/win32-x64@0.19.11:
- resolution: {integrity: sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==}
+ /@esbuild/win32-x64@0.19.12:
+ resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==}
engines: {node: '>=12'}
cpu: [x64]
os: [win32]
@@ -1687,13 +1687,13 @@ packages:
lucia: 3.0.1
dev: false
- /@lucia-auth/adapter-prisma@4.0.0(@prisma/client@5.8.1)(lucia@3.0.1):
+ /@lucia-auth/adapter-prisma@4.0.0(@prisma/client@5.9.1)(lucia@3.0.1):
resolution: {integrity: sha512-TJg4/U1K1slS4A/OzDYCgmHTrIArntIynue14zGIEaMDu+OD+tGyq9WwQWqOabpx2Gm9xtDsoK+tTokAY3Up7A==}
peerDependencies:
'@prisma/client': ^4.2.0 || ^5.0.0
lucia: 3.x
dependencies:
- '@prisma/client': 5.8.1(prisma@5.8.1)
+ '@prisma/client': 5.9.1(prisma@5.9.1)
lucia: 3.0.1
dev: false
@@ -2407,8 +2407,8 @@ packages:
'@noble/hashes': 1.3.2
dev: false
- /@planetscale/database@1.15.0:
- resolution: {integrity: sha512-X4GmGGKE3o6tj/FM+ElDdyVb9BI8Y2OSSeOtyW/gCmVS0XLs4tTppg0cVLL89CS+awEhIIYXFDwqT3a7pbYROg==}
+ /@planetscale/database@1.16.0:
+ resolution: {integrity: sha512-HNUrTqrd8aTRZYMDcsoZ62s36sIWkMMmKZBOehoCWR2WrfNPKq+Q1yQef5okl3pSVlldFnu2h/dbHjOsDTHXug==}
engines: {node: '>=16'}
dev: false
@@ -2423,8 +2423,8 @@ packages:
/@polka/url@1.0.0-next.24:
resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==}
- /@prisma/client@5.8.1(prisma@5.8.1):
- resolution: {integrity: sha512-xQtMPfbIwLlbm0VVIVQY2yqQVOxPwRQhvIp7Z3m2900g1bu/zRHKhYZJQWELqmjl6d8YwBy0K2NvMqh47v1ubw==}
+ /@prisma/client@5.9.1(prisma@5.9.1):
+ resolution: {integrity: sha512-caSOnG4kxcSkhqC/2ShV7rEoWwd3XrftokxJqOCMVvia4NYV/TPtJlS9C2os3Igxw/Qyxumj9GBQzcStzECvtQ==}
engines: {node: '>=16.13'}
requiresBuild: true
peerDependencies:
@@ -2433,35 +2433,35 @@ packages:
prisma:
optional: true
dependencies:
- prisma: 5.8.1
+ prisma: 5.9.1
dev: false
- /@prisma/debug@5.8.1:
- resolution: {integrity: sha512-tjuw7eA0Us3T42jx9AmAgL58rzwzpFGYc3R7Y4Ip75EBYrKMBA1YihuWMcBC92ILmjlQ/u3p8VxcIE0hr+fZfg==}
+ /@prisma/debug@5.9.1:
+ resolution: {integrity: sha512-yAHFSFCg8KVoL0oRUno3m60GAjsUKYUDkQ+9BA2X2JfVR3kRVSJFc/GpQ2fSORi4pSHZR9orfM4UC9OVXIFFTA==}
- /@prisma/engines-version@5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2:
- resolution: {integrity: sha512-f5C3JM3l9yhGr3cr4FMqWloFaSCpNpMi58Om22rjD2DOz3owci2mFdFXMgnAGazFPKrCbbEhcxdsRfspEYRoFQ==}
+ /@prisma/engines-version@5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64:
+ resolution: {integrity: sha512-HFl7275yF0FWbdcNvcSRbbu9JCBSLMcurYwvWc8WGDnpu7APxQo2ONtZrUggU3WxLxUJ2uBX+0GOFIcJeVeOOQ==}
- /@prisma/engines@5.8.1:
- resolution: {integrity: sha512-TJgYLRrZr56uhqcXO4GmP5be+zjCIHtLDK20Cnfg+o9d905hsN065QOL+3Z0zQAy6YD31Ol4u2kzSfRmbJv/uA==}
+ /@prisma/engines@5.9.1:
+ resolution: {integrity: sha512-gkdXmjxQ5jktxWNdDA5aZZ6R8rH74JkoKq6LD5mACSvxd2vbqWeWIOV0Py5wFC8vofOYShbt6XUeCIUmrOzOnQ==}
requiresBuild: true
dependencies:
- '@prisma/debug': 5.8.1
- '@prisma/engines-version': 5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2
- '@prisma/fetch-engine': 5.8.1
- '@prisma/get-platform': 5.8.1
+ '@prisma/debug': 5.9.1
+ '@prisma/engines-version': 5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64
+ '@prisma/fetch-engine': 5.9.1
+ '@prisma/get-platform': 5.9.1
- /@prisma/fetch-engine@5.8.1:
- resolution: {integrity: sha512-+bgjjoSFa6uYEbAPlklfoVSStOEfcpheOjoBoNsNNSQdSzcwE2nM4Q0prun0+P8/0sCHo18JZ9xqa8gObvgOUw==}
+ /@prisma/fetch-engine@5.9.1:
+ resolution: {integrity: sha512-l0goQOMcNVOJs1kAcwqpKq3ylvkD9F04Ioe1oJoCqmz05mw22bNAKKGWuDd3zTUoUZr97va0c/UfLNru+PDmNA==}
dependencies:
- '@prisma/debug': 5.8.1
- '@prisma/engines-version': 5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2
- '@prisma/get-platform': 5.8.1
+ '@prisma/debug': 5.9.1
+ '@prisma/engines-version': 5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64
+ '@prisma/get-platform': 5.9.1
- /@prisma/get-platform@5.8.1:
- resolution: {integrity: sha512-wnA+6HTFcY+tkykMokix9GiAkaauPC5W/gg0O5JB0J8tCTNWrqpnQ7AsaGRfkYUbeOIioh6woDjQrGTTRf1Zag==}
+ /@prisma/get-platform@5.9.1:
+ resolution: {integrity: sha512-6OQsNxTyhvG+T2Ksr8FPFpuPeL4r9u0JF0OZHUBI/Uy9SS43sPyAIutt4ZEAyqWQt104ERh70EZedkHZKsnNbg==}
dependencies:
- '@prisma/debug': 5.8.1
+ '@prisma/debug': 5.9.1
/@resvg/resvg-js-android-arm-eabi@2.6.0:
resolution: {integrity: sha512-lJnZ/2P5aMocrFMW7HWhVne5gH82I8xH6zsfH75MYr4+/JOaVcGCTEQ06XFohGMdYRP3v05SSPLPvTM/RHjxfA==}
@@ -2616,92 +2616,92 @@ packages:
picomatch: 2.3.1
dev: true
- /@rollup/rollup-android-arm-eabi@4.9.1:
- resolution: {integrity: sha512-6vMdBZqtq1dVQ4CWdhFwhKZL6E4L1dV6jUjuBvsavvNJSppzi6dLBbuV+3+IyUREaj9ZFvQefnQm28v4OCXlig==}
+ /@rollup/rollup-android-arm-eabi@4.9.6:
+ resolution: {integrity: sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==}
cpu: [arm]
os: [android]
requiresBuild: true
optional: true
- /@rollup/rollup-android-arm64@4.9.1:
- resolution: {integrity: sha512-Jto9Fl3YQ9OLsTDWtLFPtaIMSL2kwGyGoVCmPC8Gxvym9TCZm4Sie+cVeblPO66YZsYH8MhBKDMGZ2NDxuk/XQ==}
+ /@rollup/rollup-android-arm64@4.9.6:
+ resolution: {integrity: sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==}
cpu: [arm64]
os: [android]
requiresBuild: true
optional: true
- /@rollup/rollup-darwin-arm64@4.9.1:
- resolution: {integrity: sha512-LtYcLNM+bhsaKAIGwVkh5IOWhaZhjTfNOkGzGqdHvhiCUVuJDalvDxEdSnhFzAn+g23wgsycmZk1vbnaibZwwA==}
+ /@rollup/rollup-darwin-arm64@4.9.6:
+ resolution: {integrity: sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==}
cpu: [arm64]
os: [darwin]
requiresBuild: true
optional: true
- /@rollup/rollup-darwin-x64@4.9.1:
- resolution: {integrity: sha512-KyP/byeXu9V+etKO6Lw3E4tW4QdcnzDG/ake031mg42lob5tN+5qfr+lkcT/SGZaH2PdW4Z1NX9GHEkZ8xV7og==}
+ /@rollup/rollup-darwin-x64@4.9.6:
+ resolution: {integrity: sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==}
cpu: [x64]
os: [darwin]
requiresBuild: true
optional: true
- /@rollup/rollup-linux-arm-gnueabihf@4.9.1:
- resolution: {integrity: sha512-Yqz/Doumf3QTKplwGNrCHe/B2p9xqDghBZSlAY0/hU6ikuDVQuOUIpDP/YcmoT+447tsZTmirmjgG3znvSCR0Q==}
+ /@rollup/rollup-linux-arm-gnueabihf@4.9.6:
+ resolution: {integrity: sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==}
cpu: [arm]
os: [linux]
requiresBuild: true
optional: true
- /@rollup/rollup-linux-arm64-gnu@4.9.1:
- resolution: {integrity: sha512-u3XkZVvxcvlAOlQJ3UsD1rFvLWqu4Ef/Ggl40WAVCuogf4S1nJPHh5RTgqYFpCOvuGJ7H5yGHabjFKEZGExk5Q==}
+ /@rollup/rollup-linux-arm64-gnu@4.9.6:
+ resolution: {integrity: sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==}
cpu: [arm64]
os: [linux]
requiresBuild: true
optional: true
- /@rollup/rollup-linux-arm64-musl@4.9.1:
- resolution: {integrity: sha512-0XSYN/rfWShW+i+qjZ0phc6vZ7UWI8XWNz4E/l+6edFt+FxoEghrJHjX1EY/kcUGCnZzYYRCl31SNdfOi450Aw==}
+ /@rollup/rollup-linux-arm64-musl@4.9.6:
+ resolution: {integrity: sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==}
cpu: [arm64]
os: [linux]
requiresBuild: true
optional: true
- /@rollup/rollup-linux-riscv64-gnu@4.9.1:
- resolution: {integrity: sha512-LmYIO65oZVfFt9t6cpYkbC4d5lKHLYv5B4CSHRpnANq0VZUQXGcCPXHzbCXCz4RQnx7jvlYB1ISVNCE/omz5cw==}
+ /@rollup/rollup-linux-riscv64-gnu@4.9.6:
+ resolution: {integrity: sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==}
cpu: [riscv64]
os: [linux]
requiresBuild: true
optional: true
- /@rollup/rollup-linux-x64-gnu@4.9.1:
- resolution: {integrity: sha512-kr8rEPQ6ns/Lmr/hiw8sEVj9aa07gh1/tQF2Y5HrNCCEPiCBGnBUt9tVusrcBBiJfIt1yNaXN6r1CCmpbFEDpg==}
+ /@rollup/rollup-linux-x64-gnu@4.9.6:
+ resolution: {integrity: sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==}
cpu: [x64]
os: [linux]
requiresBuild: true
optional: true
- /@rollup/rollup-linux-x64-musl@4.9.1:
- resolution: {integrity: sha512-t4QSR7gN+OEZLG0MiCgPqMWZGwmeHhsM4AkegJ0Kiy6TnJ9vZ8dEIwHw1LcZKhbHxTY32hp9eVCMdR3/I8MGRw==}
+ /@rollup/rollup-linux-x64-musl@4.9.6:
+ resolution: {integrity: sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==}
cpu: [x64]
os: [linux]
requiresBuild: true
optional: true
- /@rollup/rollup-win32-arm64-msvc@4.9.1:
- resolution: {integrity: sha512-7XI4ZCBN34cb+BH557FJPmh0kmNz2c25SCQeT9OiFWEgf8+dL6ZwJ8f9RnUIit+j01u07Yvrsuu1rZGxJCc51g==}
+ /@rollup/rollup-win32-arm64-msvc@4.9.6:
+ resolution: {integrity: sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==}
cpu: [arm64]
os: [win32]
requiresBuild: true
optional: true
- /@rollup/rollup-win32-ia32-msvc@4.9.1:
- resolution: {integrity: sha512-yE5c2j1lSWOH5jp+Q0qNL3Mdhr8WuqCNVjc6BxbVfS5cAS6zRmdiw7ktb8GNpDCEUJphILY6KACoFoRtKoqNQg==}
+ /@rollup/rollup-win32-ia32-msvc@4.9.6:
+ resolution: {integrity: sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==}
cpu: [ia32]
os: [win32]
requiresBuild: true
optional: true
- /@rollup/rollup-win32-x64-msvc@4.9.1:
- resolution: {integrity: sha512-PyJsSsafjmIhVgaI1Zdj7m8BB8mMckFah/xbpplObyHfiXzKcI5UOUXRyOdHW7nz4DpMCuzLnF7v5IWHenCwYA==}
+ /@rollup/rollup-win32-x64-msvc@4.9.6:
+ resolution: {integrity: sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==}
cpu: [x64]
os: [win32]
requiresBuild: true
@@ -2864,7 +2864,7 @@ packages:
'@sentry/types': 7.100.1
'@sentry/utils': 7.100.1
'@sentry/vite-plugin': 0.6.1
- '@sveltejs/kit': 2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.10)(vite@5.0.12)
+ '@sveltejs/kit': 2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.10)(vite@5.1.1)
magicast: 0.2.8
sorcery: 0.11.0
transitivePeerDependencies:
@@ -2931,7 +2931,7 @@ packages:
peerDependencies:
'@sveltejs/kit': ^2.0.0
dependencies:
- '@sveltejs/kit': 2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.10)(vite@5.0.12)
+ '@sveltejs/kit': 2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.10)(vite@5.1.1)
import-meta-resolve: 4.0.0
dev: true
@@ -2940,7 +2940,7 @@ packages:
peerDependencies:
'@sveltejs/kit': ^2.4.0
dependencies:
- '@sveltejs/kit': 2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.10)(vite@5.0.12)
+ '@sveltejs/kit': 2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.10)(vite@5.1.1)
'@vercel/nft': 0.26.2
esbuild: 0.19.11
transitivePeerDependencies:
@@ -2959,7 +2959,7 @@ packages:
- svelte
dev: true
- /@sveltejs/kit@2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.10)(vite@5.0.12):
+ /@sveltejs/kit@2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.10)(vite@5.1.1):
resolution: {integrity: sha512-1uyXvzC2Lu1FZa30T4y5jUAC21R309ZMRG0TPt+PPPbNUoDpy8zSmSNVWYaBWxYDqLGQ5oPNWvjvvF2IjJ1jmA==}
engines: {node: '>=18.13'}
hasBin: true
@@ -2969,7 +2969,7 @@ packages:
svelte: ^4.0.0 || ^5.0.0-next.0
vite: ^5.0.3
dependencies:
- '@sveltejs/vite-plugin-svelte': 3.0.2(svelte@4.2.10)(vite@5.0.12)
+ '@sveltejs/vite-plugin-svelte': 3.0.2(svelte@4.2.10)(vite@5.1.1)
'@types/cookie': 0.6.0
cookie: 0.6.0
devalue: 4.3.2
@@ -2983,9 +2983,9 @@ packages:
sirv: 2.0.4
svelte: 4.2.10
tiny-glob: 0.2.9
- vite: 5.0.12(@types/node@20.11.16)(sass@1.70.0)
+ vite: 5.1.1(@types/node@20.11.17)(sass@1.70.0)
- /@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.10)(vite@5.0.12):
+ /@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.10)(vite@5.1.1):
resolution: {integrity: sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==}
engines: {node: ^18.0.0 || >=20}
peerDependencies:
@@ -2993,29 +2993,29 @@ packages:
svelte: ^4.0.0 || ^5.0.0-next.0
vite: ^5.0.0
dependencies:
- '@sveltejs/vite-plugin-svelte': 3.0.2(svelte@4.2.10)(vite@5.0.12)
+ '@sveltejs/vite-plugin-svelte': 3.0.2(svelte@4.2.10)(vite@5.1.1)
debug: 4.3.4
svelte: 4.2.10
- vite: 5.0.12(@types/node@20.11.16)(sass@1.70.0)
+ vite: 5.1.1(@types/node@20.11.17)(sass@1.70.0)
transitivePeerDependencies:
- supports-color
- /@sveltejs/vite-plugin-svelte@3.0.2(svelte@4.2.10)(vite@5.0.12):
+ /@sveltejs/vite-plugin-svelte@3.0.2(svelte@4.2.10)(vite@5.1.1):
resolution: {integrity: sha512-MpmF/cju2HqUls50WyTHQBZUV3ovV/Uk8k66AN2gwHogNAG8wnW8xtZDhzNBsFJJuvmq1qnzA5kE7YfMJNFv2Q==}
engines: {node: ^18.0.0 || >=20}
peerDependencies:
svelte: ^4.0.0 || ^5.0.0-next.0
vite: ^5.0.0
dependencies:
- '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.10)(vite@5.0.12)
+ '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.10)(vite@5.1.1)
debug: 4.3.4
deepmerge: 4.3.1
kleur: 4.1.5
magic-string: 0.30.5
svelte: 4.2.10
svelte-hmr: 0.15.3(svelte@4.2.10)
- vite: 5.0.12(@types/node@20.11.16)(sass@1.70.0)
- vitefu: 0.2.5(vite@5.0.12)
+ vite: 5.1.1(@types/node@20.11.17)(sass@1.70.0)
+ vitefu: 0.2.5(vite@5.1.1)
transitivePeerDependencies:
- supports-color
@@ -3058,15 +3058,15 @@ packages:
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
dev: true
- /@types/node@20.11.16:
- resolution: {integrity: sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==}
+ /@types/node@20.11.17:
+ resolution: {integrity: sha512-QmgQZGWu1Yw9TDyAP9ZzpFJKynYNeOvwMJmaxABfieQoVoiVOS6MN1WSpqpRcbeA5+RW82kraAVxCCJg+780Qw==}
dependencies:
undici-types: 5.26.5
/@types/pg@8.6.6:
resolution: {integrity: sha512-O2xNmXebtwVekJDD+02udOncjVcMZQuTEQEMpKJ0ZRf5E7/9JJX3izhKUcUifBkyKpljyUM6BTgy2trmviKlpw==}
dependencies:
- '@types/node': 20.11.16
+ '@types/node': 20.11.17
pg-protocol: 1.6.0
pg-types: 2.2.0
dev: false
@@ -3981,7 +3981,7 @@ packages:
- supports-color
dev: true
- /drizzle-orm@0.29.3(@neondatabase/serverless@0.8.1)(@planetscale/database@1.15.0)(mysql2@3.9.1)(pg@8.11.3)(postgres@3.4.3):
+ /drizzle-orm@0.29.3(@neondatabase/serverless@0.8.1)(@planetscale/database@1.16.0)(mysql2@3.9.1)(pg@8.11.3)(postgres@3.4.3):
resolution: {integrity: sha512-uSE027csliGSGYD0pqtM+SAQATMREb3eSM/U8s6r+Y0RFwTKwftnwwSkqx3oS65UBgqDOM0gMTl5UGNpt6lW0A==}
peerDependencies:
'@aws-sdk/client-rds-data': '>=3'
@@ -4053,7 +4053,7 @@ packages:
optional: true
dependencies:
'@neondatabase/serverless': 0.8.1
- '@planetscale/database': 1.15.0
+ '@planetscale/database': 1.16.0
mysql2: 3.9.1
pg: 8.11.3
postgres: 3.4.3
@@ -4157,36 +4157,6 @@ packages:
'@esbuild/win32-x64': 0.18.20
dev: true
- /esbuild@0.19.10:
- resolution: {integrity: sha512-S1Y27QGt/snkNYrRcswgRFqZjaTG5a5xM3EQo97uNBnH505pdzSNe/HLBq1v0RO7iK/ngdbhJB6mDAp0OK+iUA==}
- engines: {node: '>=12'}
- hasBin: true
- requiresBuild: true
- optionalDependencies:
- '@esbuild/aix-ppc64': 0.19.10
- '@esbuild/android-arm': 0.19.10
- '@esbuild/android-arm64': 0.19.10
- '@esbuild/android-x64': 0.19.10
- '@esbuild/darwin-arm64': 0.19.10
- '@esbuild/darwin-x64': 0.19.10
- '@esbuild/freebsd-arm64': 0.19.10
- '@esbuild/freebsd-x64': 0.19.10
- '@esbuild/linux-arm': 0.19.10
- '@esbuild/linux-arm64': 0.19.10
- '@esbuild/linux-ia32': 0.19.10
- '@esbuild/linux-loong64': 0.19.10
- '@esbuild/linux-mips64el': 0.19.10
- '@esbuild/linux-ppc64': 0.19.10
- '@esbuild/linux-riscv64': 0.19.10
- '@esbuild/linux-s390x': 0.19.10
- '@esbuild/linux-x64': 0.19.10
- '@esbuild/netbsd-x64': 0.19.10
- '@esbuild/openbsd-x64': 0.19.10
- '@esbuild/sunos-x64': 0.19.10
- '@esbuild/win32-arm64': 0.19.10
- '@esbuild/win32-ia32': 0.19.10
- '@esbuild/win32-x64': 0.19.10
-
/esbuild@0.19.11:
resolution: {integrity: sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==}
engines: {node: '>=12'}
@@ -4217,6 +4187,36 @@ packages:
'@esbuild/win32-ia32': 0.19.11
'@esbuild/win32-x64': 0.19.11
+ /esbuild@0.19.12:
+ resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==}
+ engines: {node: '>=12'}
+ hasBin: true
+ requiresBuild: true
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.19.12
+ '@esbuild/android-arm': 0.19.12
+ '@esbuild/android-arm64': 0.19.12
+ '@esbuild/android-x64': 0.19.12
+ '@esbuild/darwin-arm64': 0.19.12
+ '@esbuild/darwin-x64': 0.19.12
+ '@esbuild/freebsd-arm64': 0.19.12
+ '@esbuild/freebsd-x64': 0.19.12
+ '@esbuild/linux-arm': 0.19.12
+ '@esbuild/linux-arm64': 0.19.12
+ '@esbuild/linux-ia32': 0.19.12
+ '@esbuild/linux-loong64': 0.19.12
+ '@esbuild/linux-mips64el': 0.19.12
+ '@esbuild/linux-ppc64': 0.19.12
+ '@esbuild/linux-riscv64': 0.19.12
+ '@esbuild/linux-s390x': 0.19.12
+ '@esbuild/linux-x64': 0.19.12
+ '@esbuild/netbsd-x64': 0.19.12
+ '@esbuild/openbsd-x64': 0.19.12
+ '@esbuild/sunos-x64': 0.19.12
+ '@esbuild/win32-arm64': 0.19.12
+ '@esbuild/win32-ia32': 0.19.12
+ '@esbuild/win32-x64': 0.19.12
+
/escalade@3.1.1:
resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
engines: {node: '>=6'}
@@ -5933,7 +5933,7 @@ packages:
dependencies:
lilconfig: 2.1.0
postcss: 8.4.35
- ts-node: 10.9.2(@types/node@20.11.16)(typescript@5.3.3)
+ ts-node: 10.9.2(@types/node@20.11.17)(typescript@5.3.3)
yaml: 1.10.2
dev: true
@@ -5951,11 +5951,11 @@ packages:
dependencies:
lilconfig: 3.0.0
postcss: 8.4.35
- ts-node: 10.9.2(@types/node@20.11.16)(typescript@5.3.3)
+ ts-node: 10.9.2(@types/node@20.11.17)(typescript@5.3.3)
yaml: 2.3.4
- /postcss-load-config@5.0.2(postcss@8.4.35):
- resolution: {integrity: sha512-Q8QR3FYbqOKa0bnC1UQ2bFq9/ulHX5Bi34muzitMr8aDtUelO5xKeJEYC/5smE0jNE9zdB/NBnOwXKexELbRlw==}
+ /postcss-load-config@5.0.3(postcss@8.4.35):
+ resolution: {integrity: sha512-90pBBI5apUVruIEdCxZic93Wm+i9fTrp7TXbgdUCH+/L+2WnfpITSpq5dFU/IPvbv7aNiMlQISpUkAm3fEcvgQ==}
engines: {node: '>= 18'}
peerDependencies:
jiti: '>=1.21.0'
@@ -6228,13 +6228,13 @@ packages:
react-is: 18.2.0
dev: true
- /prisma@5.8.1:
- resolution: {integrity: sha512-N6CpjzECnUHZ5beeYpDzkt2rYpEdAeqXX2dweu6BoQaeYkNZrC/WJHM+5MO/uidFHTak8QhkPKBWck1o/4MD4A==}
+ /prisma@5.9.1:
+ resolution: {integrity: sha512-Hy/8KJZz0ELtkw4FnG9MS9rNWlXcJhf98Z2QMqi0QiVMoS8PzsBkpla0/Y5hTlob8F3HeECYphBjqmBxrluUrQ==}
engines: {node: '>=16.13'}
hasBin: true
requiresBuild: true
dependencies:
- '@prisma/engines': 5.8.1
+ '@prisma/engines': 5.9.1
/progress@2.0.3:
resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==}
@@ -6345,24 +6345,26 @@ packages:
dependencies:
glob: 7.2.3
- /rollup@4.9.1:
- resolution: {integrity: sha512-pgPO9DWzLoW/vIhlSoDByCzcpX92bKEorbgXuZrqxByte3JFk2xSW2JEeAcyLc9Ru9pqcNNW+Ob7ntsk2oT/Xw==}
+ /rollup@4.9.6:
+ resolution: {integrity: sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
+ dependencies:
+ '@types/estree': 1.0.5
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.9.1
- '@rollup/rollup-android-arm64': 4.9.1
- '@rollup/rollup-darwin-arm64': 4.9.1
- '@rollup/rollup-darwin-x64': 4.9.1
- '@rollup/rollup-linux-arm-gnueabihf': 4.9.1
- '@rollup/rollup-linux-arm64-gnu': 4.9.1
- '@rollup/rollup-linux-arm64-musl': 4.9.1
- '@rollup/rollup-linux-riscv64-gnu': 4.9.1
- '@rollup/rollup-linux-x64-gnu': 4.9.1
- '@rollup/rollup-linux-x64-musl': 4.9.1
- '@rollup/rollup-win32-arm64-msvc': 4.9.1
- '@rollup/rollup-win32-ia32-msvc': 4.9.1
- '@rollup/rollup-win32-x64-msvc': 4.9.1
+ '@rollup/rollup-android-arm-eabi': 4.9.6
+ '@rollup/rollup-android-arm64': 4.9.6
+ '@rollup/rollup-darwin-arm64': 4.9.6
+ '@rollup/rollup-darwin-x64': 4.9.6
+ '@rollup/rollup-linux-arm-gnueabihf': 4.9.6
+ '@rollup/rollup-linux-arm64-gnu': 4.9.6
+ '@rollup/rollup-linux-arm64-musl': 4.9.6
+ '@rollup/rollup-linux-riscv64-gnu': 4.9.6
+ '@rollup/rollup-linux-x64-gnu': 4.9.6
+ '@rollup/rollup-linux-x64-musl': 4.9.6
+ '@rollup/rollup-win32-arm64-msvc': 4.9.6
+ '@rollup/rollup-win32-ia32-msvc': 4.9.6
+ '@rollup/rollup-win32-x64-msvc': 4.9.6
fsevents: 2.3.3
/run-parallel@1.2.0:
@@ -6694,7 +6696,7 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
- /svelte-check@3.6.4(postcss-load-config@5.0.2)(postcss@8.4.35)(sass@1.70.0)(svelte@4.2.10):
+ /svelte-check@3.6.4(postcss-load-config@5.0.3)(postcss@8.4.35)(sass@1.70.0)(svelte@4.2.10):
resolution: {integrity: sha512-mY/dqucqm46p72M8yZmn81WPZx9mN6uuw8UVfR3ZKQeLxQg5HDGO3HHm5AZuWZPYNMLJ+TRMn+TeN53HfQ/vsw==}
hasBin: true
peerDependencies:
@@ -6707,7 +6709,7 @@ packages:
picocolors: 1.0.0
sade: 1.8.1
svelte: 4.2.10
- svelte-preprocess: 5.1.3(postcss-load-config@5.0.2)(postcss@8.4.35)(sass@1.70.0)(svelte@4.2.10)(typescript@5.3.3)
+ svelte-preprocess: 5.1.3(postcss-load-config@5.0.3)(postcss@8.4.35)(sass@1.70.0)(svelte@4.2.10)(typescript@5.3.3)
typescript: 5.3.3
transitivePeerDependencies:
- '@babel/core'
@@ -6778,7 +6780,7 @@ packages:
svelte: 4.2.10
dev: true
- /svelte-preprocess@5.1.3(postcss-load-config@5.0.2)(postcss@8.4.35)(sass@1.70.0)(svelte@4.2.10)(typescript@5.3.3):
+ /svelte-preprocess@5.1.3(postcss-load-config@5.0.3)(postcss@8.4.35)(sass@1.70.0)(svelte@4.2.10)(typescript@5.3.3):
resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==}
engines: {node: '>= 16.0.0', pnpm: ^8.0.0}
requiresBuild: true
@@ -6820,7 +6822,7 @@ packages:
detect-indent: 6.1.0
magic-string: 0.30.5
postcss: 8.4.35
- postcss-load-config: 5.0.2(postcss@8.4.35)
+ postcss-load-config: 5.0.3(postcss@8.4.35)
sass: 1.70.0
sorcery: 0.11.0
strip-indent: 3.0.0
@@ -6869,7 +6871,7 @@ packages:
'@sveltejs/kit': 1.x || 2.x
svelte: 3.x || 4.x
dependencies:
- '@sveltejs/kit': 2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.10)(vite@5.0.12)
+ '@sveltejs/kit': 2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.10)(vite@5.1.1)
svelte: 4.2.10
dev: true
@@ -6880,7 +6882,7 @@ packages:
svelte: 3.x || 4.x
zod: 3.x
dependencies:
- '@sveltejs/kit': 2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.10)(vite@5.0.12)
+ '@sveltejs/kit': 2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.10)(vite@5.1.1)
devalue: 4.3.2
klona: 2.0.6
svelte: 4.2.10
@@ -7044,7 +7046,7 @@ packages:
/ts-interface-checker@0.1.13:
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
- /ts-node@10.9.2(@types/node@20.11.16)(typescript@5.3.3):
+ /ts-node@10.9.2(@types/node@20.11.17)(typescript@5.3.3):
resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==}
hasBin: true
peerDependencies:
@@ -7063,7 +7065,7 @@ packages:
'@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4
- '@types/node': 20.11.16
+ '@types/node': 20.11.17
acorn: 8.11.2
acorn-walk: 8.3.0
arg: 4.1.3
@@ -7219,7 +7221,7 @@ packages:
- rollup
dev: true
- /vite-node@1.2.2(@types/node@20.11.16)(sass@1.70.0):
+ /vite-node@1.2.2(@types/node@20.11.17)(sass@1.70.0):
resolution: {integrity: sha512-1as4rDTgVWJO3n1uHmUYqq7nsFgINQ9u+mRcXpjeOMJUmviqNKjcZB7UfRZrlM7MjYXMKpuWp5oGkjaFLnjawg==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
@@ -7228,7 +7230,7 @@ packages:
debug: 4.3.4
pathe: 1.1.1
picocolors: 1.0.0
- vite: 5.0.12(@types/node@20.11.16)(sass@1.70.0)
+ vite: 5.1.1(@types/node@20.11.17)(sass@1.70.0)
transitivePeerDependencies:
- '@types/node'
- less
@@ -7240,8 +7242,8 @@ packages:
- terser
dev: true
- /vite@5.0.12(@types/node@20.11.16)(sass@1.70.0):
- resolution: {integrity: sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==}
+ /vite@5.1.1(@types/node@20.11.17)(sass@1.70.0):
+ resolution: {integrity: sha512-wclpAgY3F1tR7t9LL5CcHC41YPkQIpKUGeIuT8MdNwNZr6OqOTLs7JX5vIHAtzqLWXts0T+GDrh9pN2arneKqg==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
@@ -7268,15 +7270,15 @@ packages:
terser:
optional: true
dependencies:
- '@types/node': 20.11.16
- esbuild: 0.19.10
+ '@types/node': 20.11.17
+ esbuild: 0.19.12
postcss: 8.4.35
- rollup: 4.9.1
+ rollup: 4.9.6
sass: 1.70.0
optionalDependencies:
fsevents: 2.3.3
- /vitefu@0.2.5(vite@5.0.12):
+ /vitefu@0.2.5(vite@5.1.1):
resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==}
peerDependencies:
vite: ^3.0.0 || ^4.0.0 || ^5.0.0
@@ -7284,9 +7286,9 @@ packages:
vite:
optional: true
dependencies:
- vite: 5.0.12(@types/node@20.11.16)(sass@1.70.0)
+ vite: 5.1.1(@types/node@20.11.17)(sass@1.70.0)
- /vitest@1.2.2(@types/node@20.11.16)(sass@1.70.0):
+ /vitest@1.2.2(@types/node@20.11.17)(sass@1.70.0):
resolution: {integrity: sha512-d5Ouvrnms3GD9USIK36KG8OZ5bEvKEkITFtnGv56HFaSlbItJuYr7hv2Lkn903+AvRAgSixiamozUVfORUekjw==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
@@ -7311,7 +7313,7 @@ packages:
jsdom:
optional: true
dependencies:
- '@types/node': 20.11.16
+ '@types/node': 20.11.17
'@vitest/expect': 1.2.2
'@vitest/runner': 1.2.2
'@vitest/snapshot': 1.2.2
@@ -7330,8 +7332,8 @@ packages:
strip-literal: 1.3.0
tinybench: 2.5.1
tinypool: 0.8.2
- vite: 5.0.12(@types/node@20.11.16)(sass@1.70.0)
- vite-node: 1.2.2(@types/node@20.11.16)(sass@1.70.0)
+ vite: 5.1.1(@types/node@20.11.17)(sass@1.70.0)
+ vite-node: 1.2.2(@types/node@20.11.17)(sass@1.70.0)
why-is-node-running: 2.2.2
transitivePeerDependencies:
- less
diff --git a/src/lib/components/button/index.svelte b/src/lib/components/button/index.svelte
index b67a43f..80e0419 100644
--- a/src/lib/components/button/index.svelte
+++ b/src/lib/components/button/index.svelte
@@ -1,6 +1,5 @@
@@ -27,18 +26,4 @@
min-width: 23.5rem;
}
}
-
- .danger {
- background-color: var(--warning);
- }
-
- .danger:hover {
- background-color: var(--warning-hover);
- }
-
- .btn-icon {
- display: grid;
- grid-template-columns: repeat(2, auto);
- gap: 1rem;
- }
diff --git a/src/migrate.ts b/src/migrate.ts
index 79365f3..d5befa0 100644
--- a/src/migrate.ts
+++ b/src/migrate.ts
@@ -1,7 +1,7 @@
import 'dotenv/config';
+import postgres from 'postgres';
import { drizzle } from 'drizzle-orm/postgres-js';
import { migrate } from 'drizzle-orm/postgres-js/migrator';
-import postgres from 'postgres';
const connection = postgres({
host: process.env.DATABASE_HOST,
diff --git a/src/schema.ts b/src/schema.ts
index 5eb49f8..f2a3504 100644
--- a/src/schema.ts
+++ b/src/schema.ts
@@ -1,38 +1,40 @@
import { relations, sql, type InferSelectModel } from 'drizzle-orm';
-import { pgTable, timestamp, varchar, boolean, integer, text } from 'drizzle-orm/pg-core';
+import { pgTable, timestamp, varchar, boolean, integer, text, index } from 'drizzle-orm/pg-core';
import { nanoid } from 'nanoid';
+import { tsvector } from './tsVector';
-export const users = pgTable("users", {
- id: varchar("id", {
+export const users = pgTable('users', {
+ id: varchar('id', {
length: 255
- }).primaryKey()
+ })
+ .primaryKey()
.$defaultFn(() => nanoid()),
- username: varchar("username", {
+ username: varchar('username', {
length: 255
}).unique(),
- hashed_password: varchar("hashed_password", {
+ hashed_password: varchar('hashed_password', {
length: 255
}),
- email: varchar("email", {
+ email: varchar('email', {
length: 255
}).unique(),
- first_name: varchar("first_name", {
+ first_name: varchar('first_name', {
length: 255
}),
- last_name: varchar("last_name", {
+ last_name: varchar('last_name', {
length: 255
}),
- verified: boolean("verified").default(false),
- receive_email: boolean("receive_email").default(false),
- theme: varchar("theme", {
+ verified: boolean('verified').default(false),
+ receive_email: boolean('receive_email').default(false),
+ theme: varchar('theme', {
length: 255
- }).default("system"),
- created_at: timestamp("created_at").default(sql`(now())`),
- updated_at: timestamp("updated_at").default(sql`(now())`)
+ }).default('system'),
+ created_at: timestamp('created_at').default(sql`now()`),
+ updated_at: timestamp('updated_at').default(sql`now()`)
});
export const user_relations = relations(users, ({ many }) => ({
- user_roles: many(user_roles)
+ user_roles: many(user_roles)
}));
export type Users = InferSelectModel;
@@ -48,7 +50,7 @@ export const sessions = pgTable('sessions', {
.references(() => users.id),
expiresAt: timestamp('expires_at', {
withTimezone: true,
- mode: "date"
+ mode: 'date'
}).notNull(),
ipCountry: varchar('ip_country', {
length: 255
@@ -58,243 +60,255 @@ export const sessions = pgTable('sessions', {
})
});
-export const roles = pgTable("roles", {
- id: varchar("id", {
- length: 255
- }).primaryKey()
- .$defaultFn(() => nanoid()),
- name: varchar("name", {
- length: 255
- }).unique()
+export const roles = pgTable('roles', {
+ id: varchar('id', {
+ length: 255
+ })
+ .primaryKey()
+ .$defaultFn(() => nanoid()),
+ name: varchar('name', {
+ length: 255
+ }).unique()
});
-export const user_roles = pgTable("user_roles", {
- id: varchar("id", {
- length: 255
- }).primaryKey()
- .$defaultFn(() => nanoid()),
- user_id: varchar("user_id", {
- length: 255
- })
- .notNull()
- .references(() => users.id, { onDelete: 'cascade' }),
- role_id: varchar("role_id", {
- length: 255
- })
- .notNull()
- .references(() => roles.id, { onDelete: 'cascade' }),
- created_at: timestamp("created_at", {
+export const user_roles = pgTable('user_roles', {
+ id: varchar('id', {
+ length: 255
+ })
+ .primaryKey()
+ .$defaultFn(() => nanoid()),
+ user_id: varchar('user_id', {
+ length: 255
+ })
+ .notNull()
+ .references(() => users.id, { onDelete: 'cascade' }),
+ role_id: varchar('role_id', {
+ length: 255
+ })
+ .notNull()
+ .references(() => roles.id, { onDelete: 'cascade' }),
+ created_at: timestamp('created_at', {
withTimezone: true,
- mode: "date",
- precision: 6
- }).default(sql`(now())`),
- updated_at: timestamp("updated_at", {
+ mode: 'date',
+ precision: 6
+ }).default(sql`now()`),
+ updated_at: timestamp('updated_at', {
withTimezone: true,
- mode: "date",
- precision: 6
- }).default(sql`(now())`)
+ mode: 'date',
+ precision: 6
+ }).default(sql`now()`)
});
export const user_role_relations = relations(user_roles, ({ one }) => ({
role: one(roles, {
fields: [user_roles.role_id],
references: [roles.id]
- }),
- user: one(users, {
- fields: [user_roles.user_id],
- references: [users.id]
- })
+ }),
+ user: one(users, {
+ fields: [user_roles.user_id],
+ references: [users.id]
+ })
}));
-export const games = pgTable("games", {
- id: varchar("id", {
- length: 255
- }).primaryKey()
- .$defaultFn(() => nanoid()),
- name: varchar("name", {
- length: 255
- }),
- slug: varchar("slug", {
- length: 255
- }),
- description: text("description"),
- year_published: integer("year_published"),
- min_players: integer("min_players"),
- max_players: integer("max_players"),
- playtime: integer("playtime"),
- min_playtime: integer("min_playtime"),
- max_playtime: integer("max_playtime"),
- min_age: integer("min_age"),
- image_url: varchar("image_url", {
- length: 255
- }),
- thumb_url: varchar("thumb_url", {
- length: 255
- }),
- url: varchar("url", {
- length: 255
- }),
- external_id: integer("external_id").unique(),
- last_sync_at: timestamp("last_sync_at", {
- withTimezone: true,
- mode: "date",
-precision: 6
+export const games = pgTable('games', {
+ id: varchar('id', {
+ length: 255
+ })
+ .primaryKey()
+ .$defaultFn(() => nanoid()),
+ name: varchar('name', {
+ length: 255
}),
- created_at: timestamp("created_at", {
+ slug: varchar('slug', {
+ length: 255
+ }),
+ description: text('description'),
+ year_published: integer('year_published'),
+ min_players: integer('min_players'),
+ max_players: integer('max_players'),
+ playtime: integer('playtime'),
+ min_playtime: integer('min_playtime'),
+ max_playtime: integer('max_playtime'),
+ min_age: integer('min_age'),
+ image_url: varchar('image_url', {
+ length: 255
+ }),
+ thumb_url: varchar('thumb_url', {
+ length: 255
+ }),
+ url: varchar('url', {
+ length: 255
+ }),
+ text_searchable_index: tsvector('text_searchable_index'),
+ external_id: integer('external_id').unique(),
+ last_sync_at: timestamp('last_sync_at', {
withTimezone: true,
- mode: "date",
-precision: 6
- }).default(sql`(now())`),
- updated_at: timestamp("updated_at", {
+ mode: 'date',
+ precision: 6
+ }),
+ created_at: timestamp('created_at', {
withTimezone: true,
- mode: "date",
-precision: 6
- }).default(sql`(now())`)
+ mode: 'date',
+ precision: 6
+ }).default(sql`now()`),
+ updated_at: timestamp('updated_at', {
+ withTimezone: true,
+ mode: 'date',
+ precision: 6
+ }).default(sql`now()`)
+}, (table) => {
+ return {
+ text_searchable_idx: index("text_searchable_idx").on(table.text_searchable_index).using(sql`'gin'`)
+ }
});
export type Games = InferSelectModel;
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),
-}))
-
-export const expansions = pgTable("expansions", {
- id: varchar("id", {
- length: 255
- }).primaryKey()
- .$defaultFn(() => nanoid()),
- base_game_id: varchar("base_game_id", {
- length: 255
- })
- .notNull()
- .references(() => games.id, { onDelete: 'cascade' }),
- game_id: varchar("game_id", {
- length: 255
- })
- .notNull()
- .references(() => games.id, { onDelete: 'cascade' }),
- created_at: timestamp("created_at", {
- withTimezone: true,
- mode: "date",
-precision: 6
- }).default(sql`(now())`),
- updated_at: timestamp("updated_at", {
- withTimezone: true,
- mode: "date",
-precision: 6
- }).default(sql`(now())`)
-})
-
-export const expansion_relations = relations(expansions, ({ one }) => ({
- baseGame: one(games, {
- fields: [expansions.base_game_id],
- references: [games.id]
- }),
- game: one(games, {
- fields: [expansions.game_id],
- references: [games.id]
- })
+ 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)
}));
-export const collections = pgTable("collections", {
- id: varchar("id", {
- length: 255
- }).primaryKey()
- .$defaultFn(() => nanoid()),
- user_id: varchar("user_id", {
- length: 255
- })
- .notNull()
- .references(() => users.id, { onDelete: 'cascade' }),
- created_at: timestamp("created_at", {
+export const expansions = pgTable('expansions', {
+ id: varchar('id', {
+ length: 255
+ })
+ .primaryKey()
+ .$defaultFn(() => nanoid()),
+ base_game_id: varchar('base_game_id', {
+ length: 255
+ })
+ .notNull()
+ .references(() => games.id, { onDelete: 'cascade' }),
+ game_id: varchar('game_id', {
+ length: 255
+ })
+ .notNull()
+ .references(() => games.id, { onDelete: 'cascade' }),
+ created_at: timestamp('created_at', {
withTimezone: true,
- mode: "date",
-precision: 6
- }).default(sql`(now())`),
- updated_at: timestamp("updated_at", {
+ mode: 'date',
+ precision: 6
+ }).default(sql`now()`),
+ updated_at: timestamp('updated_at', {
withTimezone: true,
- mode: "date",
-precision: 6
- }).default(sql`(now())`)
+ mode: 'date',
+ precision: 6
+ }).default(sql`now()`)
+});
+
+export const expansion_relations = relations(expansions, ({ one }) => ({
+ baseGame: one(games, {
+ fields: [expansions.base_game_id],
+ references: [games.id]
+ }),
+ game: one(games, {
+ fields: [expansions.game_id],
+ references: [games.id]
+ })
+}));
+
+export const collections = pgTable('collections', {
+ id: varchar('id', {
+ length: 255
+ })
+ .primaryKey()
+ .$defaultFn(() => nanoid()),
+ user_id: varchar('user_id', {
+ length: 255
+ })
+ .notNull()
+ .references(() => users.id, { onDelete: 'cascade' }),
+ created_at: timestamp('created_at', {
+ withTimezone: true,
+ mode: 'date',
+ precision: 6
+ }).default(sql`now()`),
+ updated_at: timestamp('updated_at', {
+ withTimezone: true,
+ mode: 'date',
+ precision: 6
+ }).default(sql`now()`)
});
export const collection_relations = relations(collections, ({ one }) => ({
- user: one(users, {
- fields: [collections.user_id],
- references: [users.id]
- }),
-}))
-
-export const collection_items = pgTable("collection_items", {
- id: varchar("id", {
- length: 255
- }).primaryKey()
- .$defaultFn(() => nanoid()),
- collection_id: varchar("collection_id", {
- length: 255
- })
- .notNull()
- .references(() => collections.id, { onDelete: 'cascade' }),
- game_id: varchar("game_id", {
- length: 255
- })
- .notNull()
- .references(() => games.id, { onDelete: 'cascade' }),
- created_at: timestamp("created_at", {
- withTimezone: true,
- mode: "date",
-precision: 6
- }).default(sql`(now())`),
- updated_at: timestamp("updated_at", {
- withTimezone: true,
- mode: "date",
-precision: 6
- }).default(sql`(now())`)
-});
-
-export const collection_item_relations = relations(collection_items, ({ one }) =>({
- collection: one(collections, {
- fields: [collection_items.collection_id],
- references: [collections.id]
- }),
- game: one(games, {
- fields: [collection_items.game_id],
- references: [games.id]
- })
+ user: one(users, {
+ fields: [collections.user_id],
+ references: [users.id]
+ })
}));
-export const wishlists = pgTable("wishlists", {
- id: varchar("id", {
- length: 255
- }).primaryKey()
- .$defaultFn(() => nanoid()),
- user_id: varchar("user_id", {
- length: 255
- })
- .notNull()
- .references(() => users.id, { onDelete: 'cascade' }),
- created_at: timestamp("created_at", {
+export const collection_items = pgTable('collection_items', {
+ id: varchar('id', {
+ length: 255
+ })
+ .primaryKey()
+ .$defaultFn(() => nanoid()),
+ collection_id: varchar('collection_id', {
+ length: 255
+ })
+ .notNull()
+ .references(() => collections.id, { onDelete: 'cascade' }),
+ game_id: varchar('game_id', {
+ length: 255
+ })
+ .notNull()
+ .references(() => games.id, { onDelete: 'cascade' }),
+ created_at: timestamp('created_at', {
withTimezone: true,
- mode: "date",
-precision: 6
- }).default(sql`(now())`),
- updated_at: timestamp("updated_at", {
+ mode: 'date',
+ precision: 6
+ }).default(sql`now()`),
+ updated_at: timestamp('updated_at', {
withTimezone: true,
- mode: "date",
-precision: 6
- }).default(sql`(now())`)
+ mode: 'date',
+ precision: 6
+ }).default(sql`now()`)
+});
+
+export const collection_item_relations = relations(collection_items, ({ one }) => ({
+ collection: one(collections, {
+ fields: [collection_items.collection_id],
+ references: [collections.id]
+ }),
+ game: one(games, {
+ fields: [collection_items.game_id],
+ references: [games.id]
+ })
+}));
+
+export const wishlists = pgTable('wishlists', {
+ id: varchar('id', {
+ length: 255
+ })
+ .primaryKey()
+ .$defaultFn(() => nanoid()),
+ user_id: varchar('user_id', {
+ length: 255
+ })
+ .notNull()
+ .references(() => users.id, { onDelete: 'cascade' }),
+ created_at: timestamp('created_at', {
+ withTimezone: true,
+ mode: 'date',
+ precision: 6
+ }).default(sql`now()`),
+ updated_at: timestamp('updated_at', {
+ withTimezone: true,
+ mode: 'date',
+ precision: 6
+ }).default(sql`now()`)
});
export const wishlists_relations = relations(wishlists, ({ one }) => ({
- user: one(users, {
- fields: [wishlists.user_id],
- references: [users.id]
- }),
-}))
+ user: one(users, {
+ fields: [wishlists.user_id],
+ references: [users.id]
+ })
+}));
export const wishlist_items = pgTable('wishlist_items', {
id: varchar('id', {
@@ -314,161 +328,166 @@ export const wishlist_items = pgTable('wishlist_items', {
.references(() => games.id, { onDelete: 'cascade' }),
created_at: timestamp('created_at', {
withTimezone: true,
- mode: "date",
-precision: 6
- }).default(sql`(now())`),
+ mode: 'date',
+ precision: 6
+ }).default(sql`now()`),
updated_at: timestamp('updated_at', {
withTimezone: true,
- mode: "date",
-precision: 6
- }).default(sql`(now())`)
+ mode: 'date',
+ precision: 6
+ }).default(sql`now()`)
});
export const wishlist_item_relations = relations(wishlist_items, ({ one }) => ({
- wishlist: one(wishlists, {
- fields: [wishlist_items.wishlist_id],
- references: [wishlists.id]
- }),
- game: one(games, {
- fields: [wishlist_items.game_id],
- references: [games.id]
- })
-}))
+ wishlist: one(wishlists, {
+ fields: [wishlist_items.wishlist_id],
+ references: [wishlists.id]
+ }),
+ game: one(games, {
+ fields: [wishlist_items.game_id],
+ references: [games.id]
+ })
+}));
-export const publishers = pgTable("publishers", {
- id: varchar("id", {
- length: 255
- }).primaryKey()
- .$defaultFn(() => nanoid()),
- name: varchar("name", {
- length: 255
- }),
- slug: varchar("slug", {
- length: 255
- }),
- external_id: integer("external_id"),
- created_at: timestamp("created_at", {
+export const publishers = pgTable('publishers', {
+ id: varchar('id', {
+ length: 255
+ })
+ .primaryKey()
+ .$defaultFn(() => nanoid()),
+ name: varchar('name', {
+ length: 255
+ }),
+ slug: varchar('slug', {
+ length: 255
+ }),
+ external_id: integer('external_id'),
+ created_at: timestamp('created_at', {
withTimezone: true,
- mode: "date",
-precision: 6
- }).default(sql`(now())`),
- updated_at: timestamp("updated_at", {
+ mode: 'date',
+ precision: 6
+ }).default(sql`now()`),
+ updated_at: timestamp('updated_at', {
withTimezone: true,
- mode: "date",
-precision: 6
- }).default(sql`(now())`)
+ mode: 'date',
+ precision: 6
+ }).default(sql`now()`)
});
export const publishers_relations = relations(publishers, ({ many }) => ({
- publishers_to_games: many(publishers_to_games)
+ publishers_to_games: many(publishers_to_games)
}));
-export const categories = pgTable("categories", {
- id: varchar("id", {
- length: 255
- }).primaryKey()
- .$defaultFn(() => nanoid()),
- name: varchar("name", {
- length: 255
- }),
- slug: varchar("slug", {
- length: 255
- }),
- external_id: integer("external_id"),
- created_at: timestamp("created_at", {
+export const categories = pgTable('categories', {
+ id: varchar('id', {
+ length: 255
+ })
+ .primaryKey()
+ .$defaultFn(() => nanoid()),
+ name: varchar('name', {
+ length: 255
+ }),
+ slug: varchar('slug', {
+ length: 255
+ }),
+ external_id: integer('external_id'),
+ created_at: timestamp('created_at', {
withTimezone: true,
- mode: "date",
-precision: 6
- }).default(sql`(now())`),
- updated_at: timestamp("updated_at", {
+ mode: 'date',
+ precision: 6
+ }).default(sql`now()`),
+ updated_at: timestamp('updated_at', {
withTimezone: true,
- mode: "date",
-precision: 6
- }).default(sql`(now())`)
+ mode: 'date',
+ precision: 6
+ }).default(sql`now()`)
});
export const categories_relations = relations(categories, ({ many }) => ({
- categories_to_games: many(categories_to_games)
+ categories_to_games: many(categories_to_games)
}));
-export const mechanics = pgTable("mechanics", {
- id: varchar("id", {
- length: 255
- }).primaryKey()
- .$defaultFn(() => nanoid()),
- name: varchar("name", {
- length: 255
- }),
- slug: varchar("slug", {
- length: 255
- }),
- external_id: integer("external_id"),
- created_at: timestamp("created_at", {
+export const mechanics = pgTable('mechanics', {
+ id: varchar('id', {
+ length: 255
+ })
+ .primaryKey()
+ .$defaultFn(() => nanoid()),
+ name: varchar('name', {
+ length: 255
+ }),
+ slug: varchar('slug', {
+ length: 255
+ }),
+ external_id: integer('external_id'),
+ created_at: timestamp('created_at', {
withTimezone: true,
- mode: "date",
-precision: 6
- }).default(sql`(now())`),
- updated_at: timestamp("updated_at", {
+ mode: 'date',
+ precision: 6
+ }).default(sql`now()`),
+ updated_at: timestamp('updated_at', {
withTimezone: true,
- mode: "date",
-precision: 6
- }).default(sql`(now())`)
+ mode: 'date',
+ precision: 6
+ }).default(sql`now()`)
});
export const mechanic_relations = relations(mechanics, ({ many }) => ({
- mechanics_to_games: many(mechanics_to_games)
-}))
+ mechanics_to_games: many(mechanics_to_games)
+}));
-export const designers = pgTable("designers", {
- id: varchar("id", {
- length: 255
- }).primaryKey()
- .$defaultFn(() => nanoid()),
- name: varchar("name", {
- length: 255
- }),
- slug: varchar("slug", {
- length: 255
- }),
- external_id: integer("external_id"),
- created_at: timestamp("created_at", {
+export const designers = pgTable('designers', {
+ id: varchar('id', {
+ length: 255
+ })
+ .primaryKey()
+ .$defaultFn(() => nanoid()),
+ name: varchar('name', {
+ length: 255
+ }),
+ slug: varchar('slug', {
+ length: 255
+ }),
+ external_id: integer('external_id'),
+ created_at: timestamp('created_at', {
withTimezone: true,
- mode: "date",
-precision: 6
- }).default(sql`(now())`),
- updated_at: timestamp("updated_at", {
+ mode: 'date',
+ precision: 6
+ }).default(sql`now()`),
+ updated_at: timestamp('updated_at', {
withTimezone: true,
- mode: "date",
-precision: 6
- }).default(sql`(now())`)
+ mode: 'date',
+ precision: 6
+ }).default(sql`now()`)
});
export const designers_relations = relations(designers, ({ many }) => ({
- designers_to_games: many(designers_to_games)
+ designers_to_games: many(designers_to_games)
}));
-export const artists = pgTable("artists", {
- id: varchar("id", {
- length: 255
- }).primaryKey()
- .$defaultFn(() => nanoid()),
- name: varchar("name", {
- length: 255
- }),
- slug: varchar("slug", {
- length: 255
- }),
- external_id: integer("external_id"),
- created_at: timestamp("created_at", {
+export const artists = pgTable('artists', {
+ id: varchar('id', {
+ length: 255
+ })
+ .primaryKey()
+ .$defaultFn(() => nanoid()),
+ name: varchar('name', {
+ length: 255
+ }),
+ slug: varchar('slug', {
+ length: 255
+ }),
+ external_id: integer('external_id'),
+ created_at: timestamp('created_at', {
withTimezone: true,
- mode: "date",
-precision: 6
- }).default(sql`(now())`),
- updated_at: timestamp("updated_at", {
+ mode: 'date',
+ precision: 6
+ }).default(sql`now()`),
+ updated_at: timestamp('updated_at', {
withTimezone: true,
- mode: "date",
-precision: 6
- }).default(sql`(now())`)
+ mode: 'date',
+ precision: 6
+ }).default(sql`now()`)
});
export const artists_relations = relations(artists, ({ many }) => ({
@@ -481,96 +500,96 @@ export const artists_to_games = pgTable('artists_to_games', {
}),
game_id: varchar('game_id', {
length: 255
- }),
+ })
});
export const artists_to_games_relations = relations(artists_to_games, ({ one }) => ({
- artist: one(artists, {
- fields: [artists_to_games.artist_id],
- references: [artists.id]
- }),
- game: one(games, {
- fields: [artists_to_games.game_id],
- references: [games.id]
- }),
+ artist: one(artists, {
+ fields: [artists_to_games.artist_id],
+ references: [artists.id]
+ }),
+ game: one(games, {
+ fields: [artists_to_games.game_id],
+ references: [games.id]
+ })
}));
-export const categories_to_games = pgTable("categories_to_games", {
- category_id: varchar("category_id", {
- length: 255
- }),
- game_id: varchar("game_id", {
- length: 255
- }),
+export const categories_to_games = pgTable('categories_to_games', {
+ category_id: varchar('category_id', {
+ length: 255
+ }),
+ game_id: varchar('game_id', {
+ length: 255
+ })
});
export const categories_to_games_relations = relations(categories_to_games, ({ one }) => ({
- category: one(categories, {
- fields: [categories_to_games.category_id],
- references: [categories.id]
- }),
- game: one(games, {
- fields: [categories_to_games.game_id],
- references: [games.id]
- }),
-}))
+ category: one(categories, {
+ fields: [categories_to_games.category_id],
+ references: [categories.id]
+ }),
+ game: one(games, {
+ fields: [categories_to_games.game_id],
+ references: [games.id]
+ })
+}));
-export const designers_to_games = pgTable("designers_to_games", {
- designer_id: varchar("designer_id", {
- length: 255
- }),
- game_id: varchar("game_id", {
- length: 255
- }),
+export const designers_to_games = pgTable('designers_to_games', {
+ designer_id: varchar('designer_id', {
+ length: 255
+ }),
+ game_id: varchar('game_id', {
+ length: 255
+ })
});
export const designers_to_games_relations = relations(designers_to_games, ({ one }) => ({
- designer: one(designers, {
- fields: [designers_to_games.designer_id],
- references: [designers.id]
- }),
- game: one(games, {
- fields: [designers_to_games.game_id],
- references: [games.id]
- }),
-}))
+ designer: one(designers, {
+ fields: [designers_to_games.designer_id],
+ references: [designers.id]
+ }),
+ game: one(games, {
+ fields: [designers_to_games.game_id],
+ references: [games.id]
+ })
+}));
-export const mechanics_to_games = pgTable("mechanics_to_games", {
- mechanic_id: varchar("mechanic_id", {
- length: 255
- }),
- game_id: varchar("game_id", {
- length: 255
- }),
+export const mechanics_to_games = pgTable('mechanics_to_games', {
+ mechanic_id: varchar('mechanic_id', {
+ length: 255
+ }),
+ game_id: varchar('game_id', {
+ length: 255
+ })
});
export const mechanics_to_games_relations = relations(mechanics_to_games, ({ one }) => ({
- mechanic: one(mechanics, {
- fields: [mechanics_to_games.mechanic_id],
- references: [mechanics.id]
- }),
- game: one(games, {
- fields: [mechanics_to_games.game_id],
- references: [games.id]
- }),
+ mechanic: one(mechanics, {
+ fields: [mechanics_to_games.mechanic_id],
+ references: [mechanics.id]
+ }),
+ game: one(games, {
+ fields: [mechanics_to_games.game_id],
+ references: [games.id]
+ })
}));
-export const publishers_to_games = pgTable("publishers_to_games", {
- publisher_id: varchar("publisher_id", {
- length: 255
- }),
- game_id: varchar("game_id", {
- length: 255
- }),
+export const publishers_to_games = pgTable('publishers_to_games', {
+ publisher_id: varchar('publisher_id', {
+ length: 255
+ }),
+ game_id: varchar('game_id', {
+ length: 255
+ })
});
export const publishers_to_games_relations = relations(publishers_to_games, ({ one }) => ({
- publisher: one(publishers, {
- fields: [publishers_to_games.publisher_id],
- references: [publishers.id]
- }),
- game: one(games, {
- fields: [publishers_to_games.game_id],
- references: [games.id]
- }),
+ publisher: one(publishers, {
+ fields: [publishers_to_games.publisher_id],
+ references: [publishers.id]
+ }),
+ game: one(games, {
+ fields: [publishers_to_games.game_id],
+ references: [games.id]
+ })
}));
diff --git a/src/tsVector.ts b/src/tsVector.ts
new file mode 100644
index 0000000..cf14715
--- /dev/null
+++ b/src/tsVector.ts
@@ -0,0 +1,26 @@
+import { customType } from 'drizzle-orm/pg-core';
+
+function genExpWithWeights(input: string[]) {
+ const columnExpressions = input.map((column, index) => {
+ const weight = String.fromCharCode(index + 65);
+ return `setweight(to_tsvector('english', coalesce(${column}, '')), '${weight}')`;
+ });
+
+ return `tsvector GENERATED ALWAYS AS (${columnExpressions.join(' || ')}) STORED`;
+}
+
+export const tsvector = customType<{
+ data: string;
+ config: { sources: string[]; weighted: boolean };
+}>({
+ dataType(config) {
+ if (config) {
+ const sources = config.sources.join(" || ' ' || ");
+ return config.weighted
+ ? genExpWithWeights(config.sources)
+ : `tsvector generated always as (to_tsvector('english', ${sources})) stored`;
+ } else {
+ return `tsvector`;
+ }
+ }
+});