chore: add db schema and migrations

This commit is contained in:
Nicola Zambello 2023-08-07 11:00:47 +02:00
parent 6627b31107
commit efe8868c1d
Signed by: nzambello
GPG key ID: 56E4A92C2C1E50BA
5 changed files with 80 additions and 199 deletions

View file

@ -14,14 +14,15 @@ CREATE TABLE "Password" (
);
-- CreateTable
CREATE TABLE "Note" (
CREATE TABLE "Translation" (
"id" TEXT NOT NULL PRIMARY KEY,
"title" TEXT NOT NULL,
"body" TEXT NOT NULL,
"lang" TEXT NOT NULL,
"text" TEXT NOT NULL,
"result" TEXT NOT NULL,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" DATETIME NOT NULL,
"userId" TEXT NOT NULL,
CONSTRAINT "Note_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE
CONSTRAINT "Translation_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE
);
-- CreateIndex

View file

@ -0,0 +1,2 @@
-- AlterTable
ALTER TABLE "User" ADD COLUMN "openAIKey" TEXT;

View file

@ -15,7 +15,9 @@ model User {
updatedAt DateTime @updatedAt
password Password?
notes Note[]
translations Translation[]
openAIKey String?
}
model Password {
@ -25,10 +27,11 @@ model Password {
userId String @unique
}
model Note {
model Translation {
id String @id @default(cuid())
title String
body String
lang String
text String
result String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt

View file

@ -4,14 +4,14 @@ import bcrypt from "bcryptjs";
const prisma = new PrismaClient();
async function seed() {
const email = "rachel@remix.run";
const email = "nicola@nzambello.dev";
// cleanup the existing database
await prisma.user.delete({ where: { email } }).catch(() => {
// no worries if it doesn't exist yet
});
const hashedPassword = await bcrypt.hash("racheliscool", 10);
const hashedPassword = await bcrypt.hash("nzambello.dev", 10);
const user = await prisma.user.create({
data: {
@ -24,18 +24,20 @@ async function seed() {
},
});
await prisma.note.create({
await prisma.translation.create({
data: {
title: "My first note",
body: "Hello, world!",
lang: "italian",
text: "Hello, world!",
result: "Ciao, mondo!",
userId: user.id,
},
});
await prisma.note.create({
await prisma.translation.create({
data: {
title: "My second note",
body: "Hello, world!",
lang: "spanish",
text: "Hello, world!",
result: "¡Hola Mundo!",
userId: user.id,
},
});

235
yarn.lock
View file

@ -2975,7 +2975,7 @@ __metadata:
languageName: node
linkType: hard
"@types/unist@npm:^2, @types/unist@npm:^2.0.0, @types/unist@npm:^2.0.2":
"@types/unist@npm:^2, @types/unist@npm:^2.0.0":
version: 2.0.7
resolution: "@types/unist@npm:2.0.7"
checksum: b97a219554e83431f19a93ff113306bf0512909292815e8f32964e47d041c505af1aaa2a381c23e137c4c0b962fad58d4ce9c5c3256642921a466be43c1fc715
@ -4258,13 +4258,6 @@ __metadata:
languageName: node
linkType: hard
"character-entities-legacy@npm:^1.0.0":
version: 1.1.4
resolution: "character-entities-legacy@npm:1.1.4"
checksum: fe03a82c154414da3a0c8ab3188e4237ec68006cbcd681cf23c7cfb9502a0e76cd30ab69a2e50857ca10d984d57de3b307680fff5328ccd427f400e559c3a811
languageName: node
linkType: hard
"character-entities-legacy@npm:^3.0.0":
version: 3.0.0
resolution: "character-entities-legacy@npm:3.0.0"
@ -4272,13 +4265,6 @@ __metadata:
languageName: node
linkType: hard
"character-entities@npm:^1.0.0":
version: 1.2.4
resolution: "character-entities@npm:1.2.4"
checksum: e1545716571ead57beac008433c1ff69517cd8ca5b336889321c5b8ff4a99c29b65589a701e9c086cda8a5e346a67295e2684f6c7ea96819fe85cbf49bf8686d
languageName: node
linkType: hard
"character-entities@npm:^2.0.0":
version: 2.0.2
resolution: "character-entities@npm:2.0.2"
@ -4286,13 +4272,6 @@ __metadata:
languageName: node
linkType: hard
"character-reference-invalid@npm:^1.0.0":
version: 1.1.4
resolution: "character-reference-invalid@npm:1.1.4"
checksum: 20274574c70e05e2f81135f3b93285536bc8ff70f37f0809b0d17791a832838f1e49938382899ed4cb444e5bbd4314ca1415231344ba29f4222ce2ccf24fea0b
languageName: node
linkType: hard
"character-reference-invalid@npm:^2.0.0":
version: 2.0.1
resolution: "character-reference-invalid@npm:2.0.1"
@ -5737,17 +5716,6 @@ __metadata:
languageName: node
linkType: hard
"eslint-plugin-markdown@npm:^3.0.0":
version: 3.0.1
resolution: "eslint-plugin-markdown@npm:3.0.1"
dependencies:
mdast-util-from-markdown: ^0.8.5
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
checksum: 91233d35777517a290377233eecbdbbe17d583f40b11b9adf371d051a98012ad6b540967aae59c2786fb8b66aa7c1abb27108947034b1f0f3e0df1c8aae9f2e7
languageName: node
linkType: hard
"eslint-plugin-node@npm:^11.1.0":
version: 11.1.0
resolution: "eslint-plugin-node@npm:11.1.0"
@ -5764,15 +5732,6 @@ __metadata:
languageName: node
linkType: hard
"eslint-plugin-prefer-let@npm:^3.0.1":
version: 3.0.1
resolution: "eslint-plugin-prefer-let@npm:3.0.1"
dependencies:
requireindex: ~1.2.0
checksum: c6b2bcd0e192d1875e986364fb3ec8421da2126b216fab418dff89249aeb4eb28fca8cd17f818f5ae9753864733299524b1ef9bb74305ed974a22d5241cdd752
languageName: node
linkType: hard
"eslint-plugin-react-hooks@npm:^4.6.0":
version: 4.6.0
resolution: "eslint-plugin-react-hooks@npm:4.6.0"
@ -7291,60 +7250,6 @@ __metadata:
languageName: node
linkType: hard
"indie-stack-template@workspace:.":
version: 0.0.0-use.local
resolution: "indie-stack-template@workspace:."
dependencies:
"@faker-js/faker": ^8.0.2
"@prisma/client": ^4.16.1
"@remix-run/css-bundle": ^1.19.2
"@remix-run/dev": ^1.19.2
"@remix-run/eslint-config": ^1.19.2
"@remix-run/node": ^1.19.2
"@remix-run/react": ^1.19.2
"@remix-run/serve": ^1.19.2
"@testing-library/cypress": ^9.0.0
"@testing-library/jest-dom": ^5.16.5
"@types/bcryptjs": ^2.4.2
"@types/eslint": ^8.40.2
"@types/node": ^18.16.18
"@types/react": ^18.2.14
"@types/react-dom": ^18.2.6
"@vitejs/plugin-react": ^4.0.1
"@vitest/coverage-v8": ^0.32.2
autoprefixer: ^10.4.14
bcryptjs: ^2.4.3
binode: ^1.0.5
cookie: ^0.5.0
cross-env: ^7.0.3
cypress: ^12.16.0
eslint: ^8.43.0
eslint-config-prettier: ^8.8.0
eslint-plugin-cypress: ^2.13.3
eslint-plugin-markdown: ^3.0.0
eslint-plugin-prefer-let: ^3.0.1
happy-dom: ^9.20.3
isbot: ^3.6.12
msw: ^1.2.2
npm-run-all: ^4.1.5
postcss: ^8.4.24
prettier: 2.8.8
prettier-plugin-tailwindcss: ^0.3.0
prisma: ^4.16.1
react: ^18.2.0
react-dom: ^18.2.0
start-server-and-test: ^2.0.0
tailwindcss: ^3.3.2
tiny-invariant: ^1.3.1
ts-node: ^10.9.1
tsconfig-paths: ^4.2.0
typescript: ^5.1.3
vite: ^4.3.9
vite-tsconfig-paths: ^3.6.0
vitest: ^0.32.2
languageName: unknown
linkType: soft
"infer-owner@npm:^1.0.4":
version: 1.0.4
resolution: "infer-owner@npm:1.0.4"
@ -7438,13 +7343,6 @@ __metadata:
languageName: node
linkType: hard
"is-alphabetical@npm:^1.0.0":
version: 1.0.4
resolution: "is-alphabetical@npm:1.0.4"
checksum: 6508cce44fd348f06705d377b260974f4ce68c74000e7da4045f0d919e568226dc3ce9685c5a2af272195384df6930f748ce9213fc9f399b5d31b362c66312cb
languageName: node
linkType: hard
"is-alphabetical@npm:^2.0.0":
version: 2.0.1
resolution: "is-alphabetical@npm:2.0.1"
@ -7452,16 +7350,6 @@ __metadata:
languageName: node
linkType: hard
"is-alphanumerical@npm:^1.0.0":
version: 1.0.4
resolution: "is-alphanumerical@npm:1.0.4"
dependencies:
is-alphabetical: ^1.0.0
is-decimal: ^1.0.0
checksum: e2e491acc16fcf5b363f7c726f666a9538dba0a043665740feb45bba1652457a73441e7c5179c6768a638ed396db3437e9905f403644ec7c468fb41f4813d03f
languageName: node
linkType: hard
"is-alphanumerical@npm:^2.0.0":
version: 2.0.1
resolution: "is-alphanumerical@npm:2.0.1"
@ -7571,13 +7459,6 @@ __metadata:
languageName: node
linkType: hard
"is-decimal@npm:^1.0.0":
version: 1.0.4
resolution: "is-decimal@npm:1.0.4"
checksum: ed483a387517856dc395c68403a10201fddcc1b63dc56513fbe2fe86ab38766120090ecdbfed89223d84ca8b1cd28b0641b93cb6597b6e8f4c097a7c24e3fb96
languageName: node
linkType: hard
"is-decimal@npm:^2.0.0":
version: 2.0.1
resolution: "is-decimal@npm:2.0.1"
@ -7649,13 +7530,6 @@ __metadata:
languageName: node
linkType: hard
"is-hexadecimal@npm:^1.0.0":
version: 1.0.4
resolution: "is-hexadecimal@npm:1.0.4"
checksum: a452e047587b6069332d83130f54d30da4faf2f2ebaa2ce6d073c27b5703d030d58ed9e0b729c8e4e5b52c6f1dab26781bb77b7bc6c7805f14f320e328ff8cd5
languageName: node
linkType: hard
"is-hexadecimal@npm:^2.0.0":
version: 2.0.1
resolution: "is-hexadecimal@npm:2.0.1"
@ -8585,19 +8459,6 @@ __metadata:
languageName: node
linkType: hard
"mdast-util-from-markdown@npm:^0.8.5":
version: 0.8.5
resolution: "mdast-util-from-markdown@npm:0.8.5"
dependencies:
"@types/mdast": ^3.0.0
mdast-util-to-string: ^2.0.0
micromark: ~2.11.0
parse-entities: ^2.0.0
unist-util-stringify-position: ^2.0.0
checksum: 5a9d0d753a42db763761e874c22365d0c7c9934a5a18b5ff76a0643610108a208a041ffdb2f3d3dd1863d3d915225a4020a0aade282af0facfd0df110601eee6
languageName: node
linkType: hard
"mdast-util-from-markdown@npm:^1.0.0":
version: 1.3.1
resolution: "mdast-util-from-markdown@npm:1.3.1"
@ -8725,13 +8586,6 @@ __metadata:
languageName: node
linkType: hard
"mdast-util-to-string@npm:^2.0.0":
version: 2.0.0
resolution: "mdast-util-to-string@npm:2.0.0"
checksum: 0b2113ada10e002fbccb014170506dabe2f2ddacaacbe4bc1045c33f986652c5a162732a2c057c5335cdb58419e2ad23e368e5be226855d4d4e280b81c4e9ec2
languageName: node
linkType: hard
"mdast-util-to-string@npm:^3.0.0, mdast-util-to-string@npm:^3.1.0":
version: 3.2.0
resolution: "mdast-util-to-string@npm:3.2.0"
@ -9155,16 +9009,6 @@ __metadata:
languageName: node
linkType: hard
"micromark@npm:~2.11.0":
version: 2.11.4
resolution: "micromark@npm:2.11.4"
dependencies:
debug: ^4.0.0
parse-entities: ^2.0.0
checksum: f8a5477d394908a5d770227aea71657a76423d420227c67ea0699e659a5f62eb39d504c1f7d69ec525a6af5aaeb6a7bffcdba95614968c03d41d3851edecb0d6
languageName: node
linkType: hard
"micromatch@npm:^4.0.4, micromatch@npm:^4.0.5":
version: 4.0.5
resolution: "micromatch@npm:4.0.5"
@ -9976,20 +9820,6 @@ __metadata:
languageName: node
linkType: hard
"parse-entities@npm:^2.0.0":
version: 2.0.0
resolution: "parse-entities@npm:2.0.0"
dependencies:
character-entities: ^1.0.0
character-entities-legacy: ^1.0.0
character-reference-invalid: ^1.0.0
is-alphanumerical: ^1.0.0
is-decimal: ^1.0.0
is-hexadecimal: ^1.0.0
checksum: 7addfd3e7d747521afac33c8121a5f23043c6973809756920d37e806639b4898385d386fcf4b3c8e2ecf1bc28aac5ae97df0b112d5042034efbe80f44081ebce
languageName: node
linkType: hard
"parse-entities@npm:^4.0.0":
version: 4.0.1
resolution: "parse-entities@npm:4.0.1"
@ -11012,7 +10842,7 @@ __metadata:
languageName: node
linkType: hard
"requireindex@npm:^1.2.0, requireindex@npm:~1.2.0":
"requireindex@npm:^1.2.0":
version: 1.2.0
resolution: "requireindex@npm:1.2.0"
checksum: 50d8b10a1ff1fdf6aea7a1870bc7bd238b0fb1917d8d7ca17fd03afc38a65dcd7a8a4eddd031f89128b5f0065833d5c92c4fef67f2c04e8624057fe626c9cf94
@ -12230,6 +12060,58 @@ __metadata:
languageName: node
linkType: hard
"translaite-2ae4@workspace:.":
version: 0.0.0-use.local
resolution: "translaite-2ae4@workspace:."
dependencies:
"@faker-js/faker": ^8.0.2
"@prisma/client": ^4.16.1
"@remix-run/css-bundle": ^1.19.2
"@remix-run/dev": ^1.19.2
"@remix-run/eslint-config": ^1.19.2
"@remix-run/node": ^1.19.2
"@remix-run/react": ^1.19.2
"@remix-run/serve": ^1.19.2
"@testing-library/cypress": ^9.0.0
"@testing-library/jest-dom": ^5.16.5
"@types/bcryptjs": ^2.4.2
"@types/eslint": ^8.40.2
"@types/node": ^18.16.18
"@types/react": ^18.2.14
"@types/react-dom": ^18.2.6
"@vitejs/plugin-react": ^4.0.1
"@vitest/coverage-v8": ^0.32.2
autoprefixer: ^10.4.14
bcryptjs: ^2.4.3
binode: ^1.0.5
cookie: ^0.5.0
cross-env: ^7.0.3
cypress: ^12.16.0
eslint: ^8.43.0
eslint-config-prettier: ^8.8.0
eslint-plugin-cypress: ^2.13.3
happy-dom: ^9.20.3
isbot: ^3.6.12
msw: ^1.2.2
npm-run-all: ^4.1.5
postcss: ^8.4.24
prettier: 2.8.8
prettier-plugin-tailwindcss: ^0.3.0
prisma: ^4.16.1
react: ^18.2.0
react-dom: ^18.2.0
start-server-and-test: ^2.0.0
tailwindcss: ^3.3.2
tiny-invariant: ^1.3.1
ts-node: ^10.9.1
tsconfig-paths: ^4.2.0
typescript: ^5.1.3
vite: ^4.3.9
vite-tsconfig-paths: ^3.6.0
vitest: ^0.32.2
languageName: unknown
linkType: soft
"trough@npm:^2.0.0":
version: 2.1.0
resolution: "trough@npm:2.1.0"
@ -12614,15 +12496,6 @@ __metadata:
languageName: node
linkType: hard
"unist-util-stringify-position@npm:^2.0.0":
version: 2.0.3
resolution: "unist-util-stringify-position@npm:2.0.3"
dependencies:
"@types/unist": ^2.0.2
checksum: f755cadc959f9074fe999578a1a242761296705a7fe87f333a37c00044de74ab4b184b3812989a57d4cd12211f0b14ad397b327c3a594c7af84361b1c25a7f09
languageName: node
linkType: hard
"unist-util-stringify-position@npm:^3.0.0":
version: 3.0.3
resolution: "unist-util-stringify-position@npm:3.0.3"