rework to prisma

This commit is contained in:
Oleksandr Honcharov 2024-08-05 23:27:01 +03:00
parent 9b164ce7be
commit ef1c5be2b7
8 changed files with 602 additions and 849 deletions

View File

@ -28,15 +28,19 @@ FROM node:20-slim as prod-runner
ENV PNPM_HOME="/pnpm" ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH" ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable RUN corepack enable
RUN apt-get update -y && apt-get install -y openssl
# Set work directory # Set work directory
WORKDIR /app WORKDIR /app
# Copy package.json from build-runner # Copy package.json from build-runner
COPY --from=build-runner /tmp/app/package.json /app/package.json COPY --from=build-runner /tmp/app/package.json /app/package.json
COPY prisma .
COPY .env .
# Install dependencies # Install dependencies
RUN pnpm install --prod RUN pnpm install --prod
RUN npx prisma migrate deploy
# Move build files # Move build files
COPY --from=build-runner /tmp/app/build /app/build COPY --from=build-runner /tmp/app/build /app/build

BIN
db/json.sqlite-journal Normal file

Binary file not shown.

View File

@ -13,12 +13,11 @@
"dependencies": { "dependencies": {
"@discordx/importer": "^1.3.0", "@discordx/importer": "^1.3.0",
"@discordx/pagination": "^3.5.1", "@discordx/pagination": "^3.5.1",
"better-sqlite3": "^11.0.0", "@prisma/client": "5.17.0",
"chalk": "^4.1.2", "chalk": "^4.1.2",
"discord.js": "^14.15.3", "discord.js": "^14.15.3",
"discordx": "^11.9.2", "discordx": "^11.9.2",
"dotenv": "^16.4.5", "dotenv": "^16.4.5"
"quick.db": "^9.1.7"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^20.14.1", "@types/node": "^20.14.1",
@ -26,6 +25,7 @@
"esbuild-plugin-version-injector": "^1.2.1", "esbuild-plugin-version-injector": "^1.2.1",
"nodemon": "^3.1.3", "nodemon": "^3.1.3",
"prettier": "^3.3.0", "prettier": "^3.3.0",
"prisma": "^5.17.0",
"tsup": "^8.1.0", "tsup": "^8.1.0",
"tsx": "^4.12.0", "tsx": "^4.12.0",
"typescript": "5.4.5" "typescript": "5.4.5"

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,41 @@
-- CreateTable
CREATE TABLE "Settings" (
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
"welcomeChannelId" INTEGER NOT NULL,
"feedbackChannelId" INTEGER NOT NULL,
"portfolioChannelId" INTEGER NOT NULL,
"makeAnOrderChannelId" INTEGER NOT NULL,
"priceChannelId" INTEGER NOT NULL,
"workLoadChannelId" INTEGER NOT NULL,
"worlLoadStatus" INTEGER NOT NULL,
"workloadMessageId" INTEGER NOT NULL
);
-- CreateTable
CREATE TABLE "Role" (
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
"welcomeRoleId" INTEGER NOT NULL,
"tickerRoleId" INTEGER NOT NULL
);
-- CreateTable
CREATE TABLE "Banner" (
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
"welcomeUrl" TEXT NOT NULL,
"ticketUrl" TEXT NOT NULL
);
-- CreateTable
CREATE TABLE "User" (
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
"discordId" INTEGER NOT NULL
);
-- CreateTable
CREATE TABLE "Ticket" (
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
"channelId" INTEGER NOT NULL,
"closed" BOOLEAN NOT NULL,
"userId" INTEGER,
CONSTRAINT "Ticket_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE SET NULL ON UPDATE CASCADE
);

View File

@ -0,0 +1,3 @@
# Please do not edit this file manually
# It should be added in your version-control system (i.e. Git)
provider = "sqlite"

46
prisma/schema.prisma Normal file
View File

@ -0,0 +1,46 @@
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "sqlite"
url = env("DATABASE_URL")
}
model Settings {
id Int @id @default(autoincrement())
welcomeChannelId Int
feedbackChannelId Int
portfolioChannelId Int
makeAnOrderChannelId Int
priceChannelId Int
workLoadChannelId Int
worlLoadStatus Int
workloadMessageId Int
}
model Role {
id Int @id @default(autoincrement())
welcomeRoleId Int
tickerRoleId Int
}
model Banner {
id Int @id @default(autoincrement())
welcomeUrl String
ticketUrl String
}
model User {
id Int @id @default(autoincrement())
discordId Int
tickets Ticket[]
}
model Ticket {
id Int @id
channelId Int
closed Boolean
User User? @relation(fields: [userId], references: [id])
userId Int?
}

View File

@ -1,22 +1,3 @@
import path from 'node:path' import { PrismaClient } from '@prisma/client'
import { QuickDB } from 'quick.db'
import { dirname } from '@discordx/importer'
export const db = new QuickDB({
filePath: path.join(dirname(import.meta.url), '..', 'db', 'json.sqlite'),
})
export enum DBTableEnum { export const db = new PrismaClient()
WELCOME_CHANNEL = 'WELCOME_CHANNEL',
WELCOME_ROLE = 'WELCOME_ROLE',
FEEDBACK_CHANNEL = 'FEEDBACK_CHANNEL',
PORTFOLIO_CHANNEL = 'PORTFOLIO_CHANNEL',
MAKE_AN_ORDER_CHANNEL = 'MAKE_AN_ORDER_CHANNEL',
PRICE_CHANNEL = 'PRICE_CHANNEL',
BANNER_WELCOME = 'BANNER_WELCOME',
BANNER_TICKET = 'BANNER_TICKET',
WORKLOAD = 'WORKLOAD',
WORKLOAD_MESSAGE = 'WORKLOAD_MESSAGE',
WORKLOAD_CHANNEL = 'WORKLOAD_CHANNEL',
TICKET_ROLE = 'TICKET_ROLE',
TICKET_OWNERS = 'TICKET_OWNERS'
}