103 lines
3.2 KiB
SQL
103 lines
3.2 KiB
SQL
-- 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");
|