Add Prisma schema, .env, and initial migration for trading bot database
This commit is contained in:
102
prisma/migrations/20250709083040_init/migration.sql
Normal file
102
prisma/migrations/20250709083040_init/migration.sql
Normal file
@@ -0,0 +1,102 @@
|
||||
-- CreateTable
|
||||
CREATE TABLE "users" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"email" TEXT NOT NULL,
|
||||
"name" TEXT,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" DATETIME NOT NULL
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "api_keys" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"userId" TEXT NOT NULL,
|
||||
"provider" TEXT NOT NULL,
|
||||
"keyName" TEXT NOT NULL,
|
||||
"encryptedKey" TEXT NOT NULL,
|
||||
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" DATETIME NOT NULL,
|
||||
CONSTRAINT "api_keys_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "user_settings" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"userId" TEXT NOT NULL,
|
||||
"autoTrading" BOOLEAN NOT NULL DEFAULT false,
|
||||
"tradingAmount" REAL NOT NULL DEFAULT 100,
|
||||
"riskPercentage" REAL NOT NULL DEFAULT 2,
|
||||
"maxDailyTrades" INTEGER NOT NULL DEFAULT 5,
|
||||
"enableNotifications" BOOLEAN NOT NULL DEFAULT true,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" DATETIME NOT NULL,
|
||||
CONSTRAINT "user_settings_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "trades" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"userId" TEXT NOT NULL,
|
||||
"symbol" TEXT NOT NULL,
|
||||
"side" TEXT NOT NULL,
|
||||
"amount" REAL NOT NULL,
|
||||
"price" REAL NOT NULL,
|
||||
"status" TEXT NOT NULL DEFAULT 'PENDING',
|
||||
"driftTxId" TEXT,
|
||||
"profit" REAL,
|
||||
"fees" REAL,
|
||||
"screenshotUrl" TEXT,
|
||||
"aiAnalysis" TEXT,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" DATETIME NOT NULL,
|
||||
"executedAt" DATETIME,
|
||||
"closedAt" DATETIME,
|
||||
CONSTRAINT "trades_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "trading_journals" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"userId" TEXT NOT NULL,
|
||||
"date" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"screenshotUrl" TEXT NOT NULL,
|
||||
"aiAnalysis" TEXT NOT NULL,
|
||||
"marketSentiment" TEXT,
|
||||
"keyLevels" JSONB,
|
||||
"recommendation" TEXT NOT NULL,
|
||||
"confidence" REAL NOT NULL,
|
||||
"notes" TEXT,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" DATETIME NOT NULL,
|
||||
CONSTRAINT "trading_journals_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "screenshots" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"url" TEXT NOT NULL,
|
||||
"filename" TEXT NOT NULL,
|
||||
"fileSize" INTEGER NOT NULL,
|
||||
"mimeType" TEXT NOT NULL,
|
||||
"metadata" JSONB,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "system_logs" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"level" TEXT NOT NULL,
|
||||
"message" TEXT NOT NULL,
|
||||
"metadata" JSONB,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "users_email_key" ON "users"("email");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "api_keys_userId_provider_keyName_key" ON "api_keys"("userId", "provider", "keyName");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "user_settings_userId_key" ON "user_settings"("userId");
|
||||
Reference in New Issue
Block a user