mirror of https://github.com/ghostfolio/ghostfolio
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							171 lines
						
					
					
						
							4.6 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							171 lines
						
					
					
						
							4.6 KiB
						
					
					
				| -- 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;
 | |
| 
 |