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.
 
 
 
 
 

108 lines
5.6 KiB

DO $$
DECLARE
v_user_id TEXT;
v_core_account_id TEXT;
v_income_account_id TEXT;
BEGIN
SELECT "id" INTO v_user_id
FROM "User"
ORDER BY "createdAt" ASC
LIMIT 1;
IF v_user_id IS NULL THEN
RAISE EXCEPTION 'No users found in User table';
END IF;
INSERT INTO "Account" ("id", "userId", "name", "currency", "balance", "isExcluded", "createdAt", "updatedAt")
SELECT
'7bd6d9ad-f711-4db5-8905-98674f79a201',
v_user_id,
'MVP Portfolio',
'USD',
0,
false,
NOW(),
NOW()
WHERE NOT EXISTS (
SELECT 1 FROM "Account" WHERE "userId" = v_user_id AND "name" = 'MVP Portfolio'
);
INSERT INTO "Account" ("id", "userId", "name", "currency", "balance", "isExcluded", "createdAt", "updatedAt")
SELECT
'b4f0ce39-ec8b-4db4-9bc1-e0a21198fe02',
v_user_id,
'Income Portfolio',
'USD',
0,
false,
NOW(),
NOW()
WHERE NOT EXISTS (
SELECT 1 FROM "Account" WHERE "userId" = v_user_id AND "name" = 'Income Portfolio'
);
SELECT "id" INTO v_core_account_id
FROM "Account"
WHERE "userId" = v_user_id AND "name" = 'MVP Portfolio'
ORDER BY "createdAt" ASC
LIMIT 1;
SELECT "id" INTO v_income_account_id
FROM "Account"
WHERE "userId" = v_user_id AND "name" = 'Income Portfolio'
ORDER BY "createdAt" ASC
LIMIT 1;
INSERT INTO "SymbolProfile" (
"id", "symbol", "dataSource", "currency", "isActive", "name", "assetClass", "assetSubClass", "createdAt", "updatedAt"
)
VALUES
('d0e56e53-d6f0-4cbc-ad49-979252abf001', 'AAPL', 'YAHOO', 'USD', true, 'Apple Inc.', 'EQUITY', 'STOCK', NOW(), NOW()),
('d0e56e53-d6f0-4cbc-ad49-979252abf002', 'MSFT', 'YAHOO', 'USD', true, 'Microsoft Corporation', 'EQUITY', 'STOCK', NOW(), NOW()),
('d0e56e53-d6f0-4cbc-ad49-979252abf003', 'VTI', 'YAHOO', 'USD', true, 'Vanguard Total Stock Market ETF', 'EQUITY', 'ETF', NOW(), NOW()),
('d0e56e53-d6f0-4cbc-ad49-979252abf004', 'SCHD', 'YAHOO', 'USD', true, 'Schwab U.S. Dividend Equity ETF', 'EQUITY', 'ETF', NOW(), NOW())
ON CONFLICT ("dataSource", "symbol")
DO UPDATE SET
"name" = EXCLUDED."name",
"currency" = 'USD',
"isActive" = true,
"assetClass" = EXCLUDED."assetClass",
"assetSubClass" = EXCLUDED."assetSubClass",
"updatedAt" = NOW();
INSERT INTO "Order" ("id", "userId", "accountId", "accountUserId", "symbolProfileId", "currency", "date", "fee", "quantity", "type", "unitPrice", "comment", "isDraft", "createdAt", "updatedAt")
SELECT '60035d49-f388-49e5-9f10-67e5d7e4a001', v_user_id, v_core_account_id, v_user_id, s."id", 'USD', '2024-01-15T00:00:00.000Z'::timestamptz, 1, 8, 'BUY'::"Type", 186.2, 'railway-seed:mvp-aapl-buy-20240115', false, NOW(), NOW()
FROM "SymbolProfile" s
WHERE s."dataSource" = 'YAHOO'::"DataSource" AND s."symbol" = 'AAPL'
AND NOT EXISTS (SELECT 1 FROM "Order" o WHERE o."userId" = v_user_id AND o."comment" = 'railway-seed:mvp-aapl-buy-20240115');
INSERT INTO "Order" ("id", "userId", "accountId", "accountUserId", "symbolProfileId", "currency", "date", "fee", "quantity", "type", "unitPrice", "comment", "isDraft", "createdAt", "updatedAt")
SELECT '60035d49-f388-49e5-9f10-67e5d7e4a002', v_user_id, v_core_account_id, v_user_id, s."id", 'USD', '2024-03-01T00:00:00.000Z'::timestamptz, 1, 5, 'BUY'::"Type", 410.5, 'railway-seed:mvp-msft-buy-20240301', false, NOW(), NOW()
FROM "SymbolProfile" s
WHERE s."dataSource" = 'YAHOO'::"DataSource" AND s."symbol" = 'MSFT'
AND NOT EXISTS (SELECT 1 FROM "Order" o WHERE o."userId" = v_user_id AND o."comment" = 'railway-seed:mvp-msft-buy-20240301');
INSERT INTO "Order" ("id", "userId", "accountId", "accountUserId", "symbolProfileId", "currency", "date", "fee", "quantity", "type", "unitPrice", "comment", "isDraft", "createdAt", "updatedAt")
SELECT '60035d49-f388-49e5-9f10-67e5d7e4a003', v_user_id, v_income_account_id, v_user_id, s."id", 'USD', '2024-02-01T00:00:00.000Z'::timestamptz, 1, 12, 'BUY'::"Type", 242.3, 'railway-seed:income-vti-buy-20240201', false, NOW(), NOW()
FROM "SymbolProfile" s
WHERE s."dataSource" = 'YAHOO'::"DataSource" AND s."symbol" = 'VTI'
AND NOT EXISTS (SELECT 1 FROM "Order" o WHERE o."userId" = v_user_id AND o."comment" = 'railway-seed:income-vti-buy-20240201');
INSERT INTO "Order" ("id", "userId", "accountId", "accountUserId", "symbolProfileId", "currency", "date", "fee", "quantity", "type", "unitPrice", "comment", "isDraft", "createdAt", "updatedAt")
SELECT '60035d49-f388-49e5-9f10-67e5d7e4a004', v_user_id, v_income_account_id, v_user_id, s."id", 'USD', '2024-03-18T00:00:00.000Z'::timestamptz, 1, 16, 'BUY'::"Type", 77.85, 'railway-seed:income-schd-buy-20240318', false, NOW(), NOW()
FROM "SymbolProfile" s
WHERE s."dataSource" = 'YAHOO'::"DataSource" AND s."symbol" = 'SCHD'
AND NOT EXISTS (SELECT 1 FROM "Order" o WHERE o."userId" = v_user_id AND o."comment" = 'railway-seed:income-schd-buy-20240318');
INSERT INTO "Order" ("id", "userId", "accountId", "accountUserId", "symbolProfileId", "currency", "date", "fee", "quantity", "type", "unitPrice", "comment", "isDraft", "createdAt", "updatedAt")
SELECT '60035d49-f388-49e5-9f10-67e5d7e4a005', v_user_id, v_income_account_id, v_user_id, s."id", 'USD', '2024-12-04T00:00:00.000Z'::timestamptz, 1, 4, 'SELL'::"Type", 80.95, 'railway-seed:income-schd-sell-20241204', false, NOW(), NOW()
FROM "SymbolProfile" s
WHERE s."dataSource" = 'YAHOO'::"DataSource" AND s."symbol" = 'SCHD'
AND NOT EXISTS (SELECT 1 FROM "Order" o WHERE o."userId" = v_user_id AND o."comment" = 'railway-seed:income-schd-sell-20241204');
END
$$;
SELECT count(*) AS users FROM "User";
SELECT count(*) AS accounts FROM "Account";
SELECT count(*) AS orders FROM "Order";
SELECT count(*) AS railway_seed_orders FROM "Order" WHERE "comment" LIKE 'railway-seed:%';