mirror of https://github.com/ghostfolio/ghostfolio
Thomas
4 years ago
committed by
GitHub
2 changed files with 174 additions and 0 deletions
@ -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; |
@ -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" |
Loading…
Reference in new issue