migrations_v1.sql 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. CREATE TABLE IF NOT EXISTS "user" (
  2. "user_id" BIGSERIAL PRIMARY KEY,
  3. "user_name" TEXT,
  4. "user_email" TEXT UNIQUE,
  5. "user_api_key" TEXT UNIQUE
  6. );
  7. CREATE TABLE IF NOT EXISTS "investment_type"(
  8. "investment_type_id" BIGSERIAL PRIMARY KEY,
  9. "investment_type_name" TEXT UNIQUE
  10. );
  11. CREATE TABLE IF NOT EXISTS "btc_value"(
  12. "btc_value_id" BIGSERIAL PRIMARY KEY,
  13. "btc_value_value" NUMERIC(18, 8),
  14. "btc_value_date" DATE UNIQUE
  15. );
  16. CREATE TABLE IF NOT EXISTS "investment_rentability"(
  17. "investment_rentability_id" BIGSERIAL PRIMARY KEY,
  18. "investment_rentability_investment_type_id" BIGINT,
  19. "investment_rentability_btcv_start" BIGINT,
  20. "investment_rentability_btcv_end" BIGINT,
  21. "investment_rentability_api_rent" NUMERIC(10, 4),
  22. FOREIGN KEY ("investment_rentability_investment_type_id") REFERENCES "investment_type" ("investment_type_id") ON DELETE CASCADE,
  23. FOREIGN KEY ("investment_rentability_btcv_start") REFERENCES "btc_value" ("btc_value_id") ON DELETE CASCADE,
  24. FOREIGN KEY ("investment_rentability_btcv_end") REFERENCES "btc_value" ("btc_value_id") ON DELETE CASCADE
  25. );
  26. CREATE TABLE IF NOT EXISTS "investment"(
  27. "investment_id" BIGSERIAL PRIMARY KEY,
  28. "investment_user_id" BIGINT,
  29. "investment_type_id" BIGINT,
  30. "investment_start" DATE,
  31. "investment_end" DATE,
  32. "investment_amt" NUMERIC(18, 4),
  33. FOREIGN KEY ("investment_user_id") REFERENCES "user" ("user_id") ON DELETE CASCADE,
  34. FOREIGN KEY ("investment_type_id") REFERENCES "investment_type" ("investment_type_id") ON DELETE CASCADE
  35. );
  36. CREATE TABLE IF NOT EXISTS "fee"(
  37. "fee_id" BIGSERIAL PRIMARY KEY,
  38. "fee_op" NUMERIC(10, 4),
  39. "fee_prorata" NUMERIC(10, 4)
  40. );
  41. CREATE TABLE IF NOT EXISTS "withdraws"(
  42. "withdraws_id" BIGSERIAL PRIMARY KEY,
  43. "withdraws_tp" TEXT,
  44. "withdraws_amt" NUMERIC(18, 4),
  45. "withdraws_investment_id" BIGINT,
  46. "withdraws_fee_id" BIGINT,
  47. "withdraws_fee_amt" NUMERIC(10, 4),
  48. "withdraws_date" DATE,
  49. FOREIGN KEY ("withdraws_investment_id") REFERENCES "investment" ("investment_id") ON DELETE CASCADE,
  50. FOREIGN KEY ("withdraws_fee_id") REFERENCES "fee" ("fee_id") ON DELETE CASCADE
  51. );
  52. CREATE TABLE IF NOT EXISTS staff (
  53. id BIGSERIAL PRIMARY KEY,
  54. username TEXT NOT NULL UNIQUE,
  55. password TEXT NOT NULL,
  56. role TEXT DEFAULT 'admin'
  57. );
  58. CREATE INDEX IF NOT EXISTS idx_investment_rentability_investment_type_id ON investment_rentability (investment_rentability_investment_type_id);
  59. CREATE INDEX IF NOT EXISTS idx_investment_rentability_btcv_start ON investment_rentability (investment_rentability_btcv_start);
  60. CREATE INDEX IF NOT EXISTS idx_investment_rentability_btcv_end ON investment_rentability (investment_rentability_btcv_end);
  61. CREATE INDEX IF NOT EXISTS idx_investment_user_id ON investment (investment_user_id);
  62. CREATE INDEX IF NOT EXISTS idx_investment_investment_type_id ON investment (investment_type_id);
  63. CREATE INDEX IF NOT EXISTS idx_withdraws_investment_id ON withdraws (withdraws_investment_id);
  64. CREATE INDEX IF NOT EXISTS idx_withdraws_fee_id ON withdraws (withdraws_fee_id);