From fabd912fbafa3e1d92c6f38907d5e5374494fa81 Mon Sep 17 00:00:00 2001 From: Thomas <4159106+dtslvr@users.noreply.github.com> Date: Sat, 5 Jun 2021 17:20:52 +0200 Subject: [PATCH] Setup initial prisma migration (#146) --- .../migration.sql | 171 ++++++++++++++++++ prisma/migrations/migration_lock.toml | 3 + 2 files changed, 174 insertions(+) create mode 100644 prisma/migrations/20210604190809_initial_migration/migration.sql create mode 100644 prisma/migrations/migration_lock.toml diff --git a/prisma/migrations/20210604190809_initial_migration/migration.sql b/prisma/migrations/20210604190809_initial_migration/migration.sql new file mode 100644 index 000000000..3e89128d4 --- /dev/null +++ b/prisma/migrations/20210604190809_initial_migration/migration.sql @@ -0,0 +1,171 @@ +-- CreateEnum +CREATE TYPE "AccountType" AS ENUM ('SECURITIES'); + +-- CreateEnum +CREATE TYPE "Currency" AS ENUM ('CHF', 'EUR', 'USD', 'GBP'); + +-- CreateEnum +CREATE TYPE "DataSource" AS ENUM ('GHOSTFOLIO', 'RAKUTEN', 'YAHOO', 'ALPHA_VANTAGE'); + +-- CreateEnum +CREATE TYPE "ViewMode" AS ENUM ('DEFAULT', 'ZEN'); + +-- CreateEnum +CREATE TYPE "Provider" AS ENUM ('GOOGLE', 'ANONYMOUS'); + +-- CreateEnum +CREATE TYPE "Role" AS ENUM ('USER', 'ADMIN', 'DEMO'); + +-- CreateEnum +CREATE TYPE "Type" AS ENUM ('BUY', 'SELL'); + +-- CreateTable +CREATE TABLE "Access" ( + "granteeUserId" TEXT NOT NULL, + "id" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + PRIMARY KEY ("id","userId") +); + +-- CreateTable +CREATE TABLE "Account" ( + "accountType" "AccountType" NOT NULL DEFAULT E'SECURITIES', + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "id" TEXT NOT NULL, + "isDefault" BOOLEAN NOT NULL DEFAULT false, + "name" TEXT, + "platformId" TEXT, + "updatedAt" TIMESTAMP(3) NOT NULL, + "userId" TEXT NOT NULL, + + PRIMARY KEY ("id","userId") +); + +-- CreateTable +CREATE TABLE "Analytics" ( + "updatedAt" TIMESTAMP(3) NOT NULL, + "userId" TEXT NOT NULL, + "activityCount" INTEGER NOT NULL DEFAULT 0, + + PRIMARY KEY ("userId") +); + +-- CreateTable +CREATE TABLE "MarketData" ( + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "date" TIMESTAMP(3) NOT NULL, + "id" TEXT NOT NULL, + "symbol" TEXT NOT NULL, + "marketPrice" DOUBLE PRECISION NOT NULL +); + +-- CreateTable +CREATE TABLE "Order" ( + "currency" "Currency" NOT NULL, + "date" TIMESTAMP(3) NOT NULL, + "fee" DOUBLE PRECISION NOT NULL, + "id" TEXT NOT NULL, + "quantity" DOUBLE PRECISION NOT NULL, + "symbol" TEXT NOT NULL, + "type" "Type" NOT NULL, + "unitPrice" DOUBLE PRECISION NOT NULL, + "userId" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "accountId" TEXT, + "accountUserId" TEXT, + "dataSource" "DataSource" NOT NULL DEFAULT E'YAHOO', + + PRIMARY KEY ("id","userId") +); + +-- CreateTable +CREATE TABLE "Platform" ( + "id" TEXT NOT NULL, + "name" TEXT, + "url" TEXT NOT NULL, + + PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Property" ( + "key" TEXT NOT NULL, + "value" TEXT NOT NULL, + + PRIMARY KEY ("key") +); + +-- CreateTable +CREATE TABLE "Settings" ( + "currency" "Currency", + "updatedAt" TIMESTAMP(3) NOT NULL, + "userId" TEXT NOT NULL, + "viewMode" "ViewMode", + + PRIMARY KEY ("userId") +); + +-- CreateTable +CREATE TABLE "Subscription" ( + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "expiresAt" TIMESTAMP(3) NOT NULL, + "id" TEXT NOT NULL, + "updatedAt" TIMESTAMP(3) NOT NULL, + "userId" TEXT NOT NULL, + + PRIMARY KEY ("id","userId") +); + +-- CreateTable +CREATE TABLE "User" ( + "id" TEXT NOT NULL, + "provider" "Provider", + "thirdPartyId" TEXT, + "accessToken" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "role" "Role" NOT NULL DEFAULT E'USER', + "updatedAt" TIMESTAMP(3) NOT NULL, + "alias" TEXT, + + PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "MarketData.date_symbol_unique" ON "MarketData"("date", "symbol"); + +-- CreateIndex +CREATE INDEX "MarketData.symbol_index" ON "MarketData"("symbol"); + +-- CreateIndex +CREATE UNIQUE INDEX "Platform.url_unique" ON "Platform"("url"); + +-- AddForeignKey +ALTER TABLE "Access" ADD FOREIGN KEY ("granteeUserId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Access" ADD FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Account" ADD FOREIGN KEY ("platformId") REFERENCES "Platform"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Account" ADD FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Analytics" ADD FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Order" ADD FOREIGN KEY ("accountId", "accountUserId") REFERENCES "Account"("id", "userId") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Order" ADD FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Settings" ADD FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Subscription" ADD FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/migrations/migration_lock.toml b/prisma/migrations/migration_lock.toml new file mode 100644 index 000000000..fbffa92c2 --- /dev/null +++ b/prisma/migrations/migration_lock.toml @@ -0,0 +1,3 @@ +# Please do not edit this file manually +# It should be added in your version-control system (i.e. Git) +provider = "postgresql" \ No newline at end of file