mirror of
https://github.com/BradNut/boredgame
synced 2025-09-08 17:40:22 +00:00
Creating external ids table and join tables.
This commit is contained in:
parent
b7d7f298bc
commit
ec5f1ed93b
10 changed files with 3558 additions and 36 deletions
30
drizzle/0004_fancy_umar.sql
Normal file
30
drizzle/0004_fancy_umar.sql
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
DO $$ BEGIN
|
||||||
|
CREATE TYPE "external_id_type" AS ENUM('game', 'category', 'mechanic', 'publisher', 'designer', 'artist');
|
||||||
|
EXCEPTION
|
||||||
|
WHEN duplicate_object THEN null;
|
||||||
|
END $$;
|
||||||
|
--> statement-breakpoint
|
||||||
|
CREATE TABLE IF NOT EXISTS "external_ids" (
|
||||||
|
"id" varchar(255) PRIMARY KEY NOT NULL,
|
||||||
|
"type" varchar(255),
|
||||||
|
"external_id" varchar(255)
|
||||||
|
);
|
||||||
|
--> statement-breakpoint
|
||||||
|
CREATE TABLE IF NOT EXISTS "game_external_ids" (
|
||||||
|
"game_id" varchar(255) NOT NULL,
|
||||||
|
"external_id" varchar(255) NOT NULL
|
||||||
|
);
|
||||||
|
--> statement-breakpoint
|
||||||
|
ALTER TABLE "games" DROP CONSTRAINT "games_external_id_unique";--> statement-breakpoint
|
||||||
|
ALTER TABLE "games" DROP COLUMN IF EXISTS "external_id";--> statement-breakpoint
|
||||||
|
DO $$ BEGIN
|
||||||
|
ALTER TABLE "game_external_ids" ADD CONSTRAINT "game_external_ids_game_id_games_id_fk" FOREIGN KEY ("game_id") REFERENCES "games"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
EXCEPTION
|
||||||
|
WHEN duplicate_object THEN null;
|
||||||
|
END $$;
|
||||||
|
--> statement-breakpoint
|
||||||
|
DO $$ BEGIN
|
||||||
|
ALTER TABLE "game_external_ids" ADD CONSTRAINT "game_external_ids_external_id_external_ids_id_fk" FOREIGN KEY ("external_id") REFERENCES "external_ids"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
EXCEPTION
|
||||||
|
WHEN duplicate_object THEN null;
|
||||||
|
END $$;
|
||||||
16
drizzle/0005_uneven_lifeguard.sql
Normal file
16
drizzle/0005_uneven_lifeguard.sql
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
ALTER TABLE "game_external_ids" RENAME TO "games_to_external_ids";--> statement-breakpoint
|
||||||
|
ALTER TABLE "games_to_external_ids" DROP CONSTRAINT "game_external_ids_game_id_games_id_fk";
|
||||||
|
--> statement-breakpoint
|
||||||
|
ALTER TABLE "games_to_external_ids" DROP CONSTRAINT "game_external_ids_external_id_external_ids_id_fk";
|
||||||
|
--> statement-breakpoint
|
||||||
|
DO $$ BEGIN
|
||||||
|
ALTER TABLE "games_to_external_ids" ADD CONSTRAINT "games_to_external_ids_game_id_games_id_fk" FOREIGN KEY ("game_id") REFERENCES "games"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
EXCEPTION
|
||||||
|
WHEN duplicate_object THEN null;
|
||||||
|
END $$;
|
||||||
|
--> statement-breakpoint
|
||||||
|
DO $$ BEGIN
|
||||||
|
ALTER TABLE "games_to_external_ids" ADD CONSTRAINT "games_to_external_ids_external_id_external_ids_id_fk" FOREIGN KEY ("external_id") REFERENCES "external_ids"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
EXCEPTION
|
||||||
|
WHEN duplicate_object THEN null;
|
||||||
|
END $$;
|
||||||
2
drizzle/0006_light_corsair.sql
Normal file
2
drizzle/0006_light_corsair.sql
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
ALTER TABLE "external_ids" ALTER COLUMN "type" SET NOT NULL;--> statement-breakpoint
|
||||||
|
ALTER TABLE "external_ids" ALTER COLUMN "external_id" SET NOT NULL;
|
||||||
1138
drizzle/meta/0004_snapshot.json
Normal file
1138
drizzle/meta/0004_snapshot.json
Normal file
File diff suppressed because it is too large
Load diff
1138
drizzle/meta/0005_snapshot.json
Normal file
1138
drizzle/meta/0005_snapshot.json
Normal file
File diff suppressed because it is too large
Load diff
1138
drizzle/meta/0006_snapshot.json
Normal file
1138
drizzle/meta/0006_snapshot.json
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -29,6 +29,27 @@
|
||||||
"when": 1707526808124,
|
"when": 1707526808124,
|
||||||
"tag": "0003_thick_tinkerer",
|
"tag": "0003_thick_tinkerer",
|
||||||
"breakpoints": true
|
"breakpoints": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idx": 4,
|
||||||
|
"version": "5",
|
||||||
|
"when": 1707932397672,
|
||||||
|
"tag": "0004_fancy_umar",
|
||||||
|
"breakpoints": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idx": 5,
|
||||||
|
"version": "5",
|
||||||
|
"when": 1707932466413,
|
||||||
|
"tag": "0005_uneven_lifeguard",
|
||||||
|
"breakpoints": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idx": 6,
|
||||||
|
"version": "5",
|
||||||
|
"when": 1707932522909,
|
||||||
|
"tag": "0006_light_corsair",
|
||||||
|
"breakpoints": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
12
package.json
12
package.json
|
|
@ -38,7 +38,7 @@
|
||||||
"@typescript-eslint/eslint-plugin": "^6.21.0",
|
"@typescript-eslint/eslint-plugin": "^6.21.0",
|
||||||
"@typescript-eslint/parser": "^6.21.0",
|
"@typescript-eslint/parser": "^6.21.0",
|
||||||
"autoprefixer": "^10.4.17",
|
"autoprefixer": "^10.4.17",
|
||||||
"dotenv": "^16.4.1",
|
"dotenv": "^16.4.4",
|
||||||
"drizzle-kit": "^0.20.14",
|
"drizzle-kit": "^0.20.14",
|
||||||
"eslint": "^8.56.0",
|
"eslint": "^8.56.0",
|
||||||
"eslint-config-prettier": "^9.1.0",
|
"eslint-config-prettier": "^9.1.0",
|
||||||
|
|
@ -50,7 +50,7 @@
|
||||||
"postcss-load-config": "^5.0.3",
|
"postcss-load-config": "^5.0.3",
|
||||||
"postcss-preset-env": "^9.3.0",
|
"postcss-preset-env": "^9.3.0",
|
||||||
"prettier": "^3.2.5",
|
"prettier": "^3.2.5",
|
||||||
"prettier-plugin-svelte": "^3.1.2",
|
"prettier-plugin-svelte": "^3.2.0",
|
||||||
"prisma": "^5.9.1",
|
"prisma": "^5.9.1",
|
||||||
"sass": "^1.70.0",
|
"sass": "^1.70.0",
|
||||||
"satori": "^0.10.13",
|
"satori": "^0.10.13",
|
||||||
|
|
@ -65,7 +65,7 @@
|
||||||
"tailwindcss": "^3.4.1",
|
"tailwindcss": "^3.4.1",
|
||||||
"ts-node": "^10.9.2",
|
"ts-node": "^10.9.2",
|
||||||
"tslib": "^2.6.1",
|
"tslib": "^2.6.1",
|
||||||
"tsx": "^4.7.0",
|
"tsx": "^4.7.1",
|
||||||
"typescript": "^5.3.3",
|
"typescript": "^5.3.3",
|
||||||
"vite": "^5.1.1",
|
"vite": "^5.1.1",
|
||||||
"vitest": "^1.2.2",
|
"vitest": "^1.2.2",
|
||||||
|
|
@ -91,14 +91,14 @@
|
||||||
"@sveltejs/adapter-vercel": "^5.1.0",
|
"@sveltejs/adapter-vercel": "^5.1.0",
|
||||||
"@types/feather-icons": "^4.29.4",
|
"@types/feather-icons": "^4.29.4",
|
||||||
"@vercel/og": "^0.5.20",
|
"@vercel/og": "^0.5.20",
|
||||||
"bits-ui": "^0.17.0",
|
"bits-ui": "^0.18.1",
|
||||||
"boardgamegeekclient": "^1.9.1",
|
"boardgamegeekclient": "^1.9.1",
|
||||||
"class-variance-authority": "^0.7.0",
|
"class-variance-authority": "^0.7.0",
|
||||||
"clsx": "^2.1.0",
|
"clsx": "^2.1.0",
|
||||||
"cookie": "^0.6.0",
|
"cookie": "^0.6.0",
|
||||||
"drizzle-orm": "^0.29.3",
|
"drizzle-orm": "^0.29.3",
|
||||||
"feather-icons": "^4.29.1",
|
"feather-icons": "^4.29.1",
|
||||||
"formsnap": "^0.4.3",
|
"formsnap": "^0.4.4",
|
||||||
"html-entities": "^2.4.0",
|
"html-entities": "^2.4.0",
|
||||||
"iconify-icon": "^2.0.0",
|
"iconify-icon": "^2.0.0",
|
||||||
"just-kebab-case": "^4.2.0",
|
"just-kebab-case": "^4.2.0",
|
||||||
|
|
@ -108,7 +108,7 @@
|
||||||
"mysql2": "^3.9.1",
|
"mysql2": "^3.9.1",
|
||||||
"nanoid": "^5.0.5",
|
"nanoid": "^5.0.5",
|
||||||
"open-props": "^1.6.18",
|
"open-props": "^1.6.18",
|
||||||
"oslo": "^1.1.0",
|
"oslo": "^1.1.1",
|
||||||
"pg": "^8.11.3",
|
"pg": "^8.11.3",
|
||||||
"postgres": "^3.4.3",
|
"postgres": "^3.4.3",
|
||||||
"radix-svelte": "^0.9.0",
|
"radix-svelte": "^0.9.0",
|
||||||
|
|
|
||||||
|
|
@ -48,8 +48,8 @@ dependencies:
|
||||||
specifier: ^0.5.20
|
specifier: ^0.5.20
|
||||||
version: 0.5.20
|
version: 0.5.20
|
||||||
bits-ui:
|
bits-ui:
|
||||||
specifier: ^0.17.0
|
specifier: ^0.18.1
|
||||||
version: 0.17.0(svelte@4.2.10)
|
version: 0.18.1(svelte@4.2.10)
|
||||||
boardgamegeekclient:
|
boardgamegeekclient:
|
||||||
specifier: ^1.9.1
|
specifier: ^1.9.1
|
||||||
version: 1.9.1
|
version: 1.9.1
|
||||||
|
|
@ -69,8 +69,8 @@ dependencies:
|
||||||
specifier: ^4.29.1
|
specifier: ^4.29.1
|
||||||
version: 4.29.1
|
version: 4.29.1
|
||||||
formsnap:
|
formsnap:
|
||||||
specifier: ^0.4.3
|
specifier: ^0.4.4
|
||||||
version: 0.4.3(svelte@4.2.10)(sveltekit-superforms@1.13.4)(zod@3.22.4)
|
version: 0.4.4(svelte@4.2.10)(sveltekit-superforms@1.13.4)(zod@3.22.4)
|
||||||
html-entities:
|
html-entities:
|
||||||
specifier: ^2.4.0
|
specifier: ^2.4.0
|
||||||
version: 2.4.0
|
version: 2.4.0
|
||||||
|
|
@ -99,8 +99,8 @@ dependencies:
|
||||||
specifier: ^1.6.18
|
specifier: ^1.6.18
|
||||||
version: 1.6.18
|
version: 1.6.18
|
||||||
oslo:
|
oslo:
|
||||||
specifier: ^1.1.0
|
specifier: ^1.1.1
|
||||||
version: 1.1.0
|
version: 1.1.1
|
||||||
pg:
|
pg:
|
||||||
specifier: ^8.11.3
|
specifier: ^8.11.3
|
||||||
version: 8.11.3
|
version: 8.11.3
|
||||||
|
|
@ -170,8 +170,8 @@ devDependencies:
|
||||||
specifier: ^10.4.17
|
specifier: ^10.4.17
|
||||||
version: 10.4.17(postcss@8.4.35)
|
version: 10.4.17(postcss@8.4.35)
|
||||||
dotenv:
|
dotenv:
|
||||||
specifier: ^16.4.1
|
specifier: ^16.4.4
|
||||||
version: 16.4.1
|
version: 16.4.4
|
||||||
drizzle-kit:
|
drizzle-kit:
|
||||||
specifier: ^0.20.14
|
specifier: ^0.20.14
|
||||||
version: 0.20.14
|
version: 0.20.14
|
||||||
|
|
@ -206,8 +206,8 @@ devDependencies:
|
||||||
specifier: ^3.2.5
|
specifier: ^3.2.5
|
||||||
version: 3.2.5
|
version: 3.2.5
|
||||||
prettier-plugin-svelte:
|
prettier-plugin-svelte:
|
||||||
specifier: ^3.1.2
|
specifier: ^3.2.0
|
||||||
version: 3.1.2(prettier@3.2.5)(svelte@4.2.10)
|
version: 3.2.0(prettier@3.2.5)(svelte@4.2.10)
|
||||||
prisma:
|
prisma:
|
||||||
specifier: ^5.9.1
|
specifier: ^5.9.1
|
||||||
version: 5.9.1
|
version: 5.9.1
|
||||||
|
|
@ -251,8 +251,8 @@ devDependencies:
|
||||||
specifier: ^2.6.1
|
specifier: ^2.6.1
|
||||||
version: 2.6.2
|
version: 2.6.2
|
||||||
tsx:
|
tsx:
|
||||||
specifier: ^4.7.0
|
specifier: ^4.7.1
|
||||||
version: 4.7.0
|
version: 4.7.1
|
||||||
typescript:
|
typescript:
|
||||||
specifier: ^5.3.3
|
specifier: ^5.3.3
|
||||||
version: 5.3.3
|
version: 5.3.3
|
||||||
|
|
@ -1393,6 +1393,14 @@ packages:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@floating-ui/core': 1.6.0
|
'@floating-ui/core': 1.6.0
|
||||||
'@floating-ui/utils': 0.2.1
|
'@floating-ui/utils': 0.2.1
|
||||||
|
dev: true
|
||||||
|
|
||||||
|
/@floating-ui/dom@1.6.3:
|
||||||
|
resolution: {integrity: sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==}
|
||||||
|
dependencies:
|
||||||
|
'@floating-ui/core': 1.6.0
|
||||||
|
'@floating-ui/utils': 0.2.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
/@floating-ui/utils@0.1.6:
|
/@floating-ui/utils@0.1.6:
|
||||||
resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==}
|
resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==}
|
||||||
|
|
@ -1746,7 +1754,7 @@ packages:
|
||||||
svelte: '>=3 <5'
|
svelte: '>=3 <5'
|
||||||
dependencies:
|
dependencies:
|
||||||
'@floating-ui/core': 1.6.0
|
'@floating-ui/core': 1.6.0
|
||||||
'@floating-ui/dom': 1.6.1
|
'@floating-ui/dom': 1.6.3
|
||||||
'@internationalized/date': 3.5.1
|
'@internationalized/date': 3.5.1
|
||||||
dequal: 2.0.3
|
dequal: 2.0.3
|
||||||
focus-trap: 7.5.4
|
focus-trap: 7.5.4
|
||||||
|
|
@ -3437,10 +3445,10 @@ packages:
|
||||||
hasBin: true
|
hasBin: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@actions/core': 1.10.1
|
'@actions/core': 1.10.1
|
||||||
dotenv: 16.4.1
|
dotenv: 16.4.4
|
||||||
front-matter: 4.0.2
|
front-matter: 4.0.2
|
||||||
nanoid: 4.0.2
|
nanoid: 4.0.2
|
||||||
oslo: 1.1.0
|
oslo: 1.1.1
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/autoprefixer@10.4.17(postcss@8.4.35):
|
/autoprefixer@10.4.17(postcss@8.4.35):
|
||||||
|
|
@ -3486,8 +3494,8 @@ packages:
|
||||||
file-uri-to-path: 1.0.0
|
file-uri-to-path: 1.0.0
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/bits-ui@0.17.0(svelte@4.2.10):
|
/bits-ui@0.18.1(svelte@4.2.10):
|
||||||
resolution: {integrity: sha512-K73jjco1qPmvGXMQtTkZG6K36UmNrPR21u+C1jzoRWmF3NnUfDP4hPJnAci0LosUycfvOxtaHB1M4awvLvQXyQ==}
|
resolution: {integrity: sha512-6junivBQ3EIHeF9j8wDa5pgzegtOwaI61ny4X8F7h2SIJi4RJWwZknkT7O5qPLeGoIYNeYV7N6EOBrr1w9/Mxg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
svelte: ^4.0.0
|
svelte: ^4.0.0
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
@ -3948,8 +3956,8 @@ packages:
|
||||||
esutils: 2.0.3
|
esutils: 2.0.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/dotenv@16.4.1:
|
/dotenv@16.4.4:
|
||||||
resolution: {integrity: sha512-CjA3y+Dr3FyFDOAMnxZEGtnW9KBR2M0JvvUtXNW+dYJL5ROWxP9DUHCwgFqpMk0OXCc0ljhaNTr2w/kutYIcHQ==}
|
resolution: {integrity: sha512-XvPXc8XAQThSjAbY6cQ/9PcBXmFoWuw1sQ3b8HqUCR6ziGXjkTi//kB9SWa2UwqlgdAIuRqAa/9hVljzPehbYg==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
|
||||||
/dreamopt@0.8.0:
|
/dreamopt@0.8.0:
|
||||||
|
|
@ -4507,8 +4515,8 @@ packages:
|
||||||
is-callable: 1.2.7
|
is-callable: 1.2.7
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/formsnap@0.4.3(svelte@4.2.10)(sveltekit-superforms@1.13.4)(zod@3.22.4):
|
/formsnap@0.4.4(svelte@4.2.10)(sveltekit-superforms@1.13.4)(zod@3.22.4):
|
||||||
resolution: {integrity: sha512-PWVq78XVUHhAU1tcVGKeGamk6B4Opkk1uVNRW2YofiQpnA5Bry1c3TQjB9cVDw5u4oAwmDvIoAzVHlrAIgc+tw==}
|
resolution: {integrity: sha512-O+Cf4GneR4CLP48J0c5AJY6eowc+1N3DYZz9uIJ3Mk57AjdL5l8DQEA+HmRfse4UEPepizEPl+M4vFg8cON2BQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
svelte: ^4.0.0
|
svelte: ^4.0.0
|
||||||
sveltekit-superforms: ^1.7.1
|
sveltekit-superforms: ^1.7.1
|
||||||
|
|
@ -5517,8 +5525,8 @@ packages:
|
||||||
'@node-rs/bcrypt': 1.9.2
|
'@node-rs/bcrypt': 1.9.2
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/oslo@1.1.0:
|
/oslo@1.1.1:
|
||||||
resolution: {integrity: sha512-uUvVt1boGt1aO0oMjzyzxIiDGAkfOdh6jPOzfJZBXsOsHuHfvTnrW7ealrBb27sgg5pHnTjmen6xPz4so+gQEQ==}
|
resolution: {integrity: sha512-BuJp5GfBW3jkUDLb8VftXD9FRTfjnodMyVshSy6p4UP8PhQI8auTxAQlef9NdFe6JC4mEgZb/mhMJpfNVudDTA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@node-rs/argon2': 1.7.0
|
'@node-rs/argon2': 1.7.0
|
||||||
'@node-rs/bcrypt': 1.9.0
|
'@node-rs/bcrypt': 1.9.0
|
||||||
|
|
@ -6203,8 +6211,8 @@ packages:
|
||||||
engines: {node: '>= 0.8.0'}
|
engines: {node: '>= 0.8.0'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/prettier-plugin-svelte@3.1.2(prettier@3.2.5)(svelte@4.2.10):
|
/prettier-plugin-svelte@3.2.0(prettier@3.2.5)(svelte@4.2.10):
|
||||||
resolution: {integrity: sha512-7xfMZtwgAWHMT0iZc8jN4o65zgbAQ3+O32V6W7pXrqNvKnHnkoyQCGCbKeUyXKZLbYE0YhFRnamfxfkEGxm8qA==}
|
resolution: {integrity: sha512-3474Zxxw8z4k64aqZmwTfcGdh/ULM2zNQslORdXEkNjKqqsSxBmiASazoxdCrmaqsbKD2Y0rxKhBEn1u0Y+j9g==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
prettier: ^3.0.0
|
prettier: ^3.0.0
|
||||||
svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0
|
svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0
|
||||||
|
|
@ -7079,8 +7087,8 @@ packages:
|
||||||
/tslib@2.6.2:
|
/tslib@2.6.2:
|
||||||
resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
|
resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
|
||||||
|
|
||||||
/tsx@4.7.0:
|
/tsx@4.7.1:
|
||||||
resolution: {integrity: sha512-I+t79RYPlEYlHn9a+KzwrvEwhJg35h/1zHsLC2JXvhC2mdynMv6Zxzvhv5EMV6VF5qJlLlkSnMVvdZV3PSIGcg==}
|
resolution: {integrity: sha512-8d6VuibXHtlN5E3zFkgY8u4DX7Y3Z27zvvPKVmLon/D4AjuKzarkUBTLDBgj9iTQ0hg5xM7c/mYiRVM+HETf0g==}
|
||||||
engines: {node: '>=18.0.0'}
|
engines: {node: '>=18.0.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import { relations, sql, type InferSelectModel } from 'drizzle-orm';
|
import { relations, sql, type InferSelectModel } from 'drizzle-orm';
|
||||||
import { pgTable, timestamp, varchar, boolean, integer, text, index } from 'drizzle-orm/pg-core';
|
import { pgTable, timestamp, varchar, boolean, integer, text, index, pgEnum } from 'drizzle-orm/pg-core';
|
||||||
import { nanoid } from 'nanoid';
|
import { nanoid } from 'nanoid';
|
||||||
import { tsvector } from './tsVector';
|
import { tsvector } from './tsVector';
|
||||||
|
|
||||||
|
|
@ -140,7 +140,6 @@ export const games = pgTable('games', {
|
||||||
length: 255
|
length: 255
|
||||||
}),
|
}),
|
||||||
text_searchable_index: tsvector('text_searchable_index'),
|
text_searchable_index: tsvector('text_searchable_index'),
|
||||||
external_id: integer('external_id').unique(),
|
|
||||||
last_sync_at: timestamp('last_sync_at', {
|
last_sync_at: timestamp('last_sync_at', {
|
||||||
withTimezone: true,
|
withTimezone: true,
|
||||||
mode: 'date',
|
mode: 'date',
|
||||||
|
|
@ -169,9 +168,41 @@ export const gameRelations = relations(games, ({ many }) => ({
|
||||||
mechanics_to_games: many(mechanics_to_games),
|
mechanics_to_games: many(mechanics_to_games),
|
||||||
designers_to_games: many(designers_to_games),
|
designers_to_games: many(designers_to_games),
|
||||||
publishers_to_games: many(publishers_to_games),
|
publishers_to_games: many(publishers_to_games),
|
||||||
artists_to_games: many(artists_to_games)
|
artists_to_games: many(artists_to_games),
|
||||||
|
gameExternalIds: many(gameExternalIds),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
export const externalIdType = pgEnum('external_id_type', [
|
||||||
|
'game', 'category', 'mechanic', 'publisher', 'designer', 'artist'
|
||||||
|
]);
|
||||||
|
|
||||||
|
export const externalIds = pgTable('external_ids', {
|
||||||
|
id: varchar('id', {
|
||||||
|
length: 255
|
||||||
|
})
|
||||||
|
.primaryKey()
|
||||||
|
.$defaultFn(() => nanoid()),
|
||||||
|
type: varchar('type', {
|
||||||
|
length: 255
|
||||||
|
}).notNull(),
|
||||||
|
externalId: varchar('external_id', {
|
||||||
|
length: 255
|
||||||
|
}).notNull()
|
||||||
|
});
|
||||||
|
|
||||||
|
export const gamesToExternalIds = pgTable('games_to_external_ids', {
|
||||||
|
gameId: varchar('game_id', {
|
||||||
|
length: 255
|
||||||
|
})
|
||||||
|
.notNull()
|
||||||
|
.references(() => games.id, { onDelete: 'cascade' }),
|
||||||
|
externalId: varchar('external_id', {
|
||||||
|
length: 255
|
||||||
|
})
|
||||||
|
.notNull()
|
||||||
|
.references(() => externalIds.id, { onDelete: 'cascade' }),
|
||||||
|
});
|
||||||
|
|
||||||
export const expansions = pgTable('expansions', {
|
export const expansions = pgTable('expansions', {
|
||||||
id: varchar('id', {
|
id: varchar('id', {
|
||||||
length: 255
|
length: 255
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue