V1__init.sql 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. CREATE TABLE "chain" (
  2. "chain_id" SERIAL PRIMARY KEY,
  3. "chain_name" TEXT NOT NULL
  4. );
  5. CREATE TABLE "company" (
  6. "company_id" SERIAL PRIMARY KEY,
  7. "company_name" TEXT NOT NULL,
  8. "company_flag" TEXT NOT NULL
  9. );
  10. CREATE TABLE "role" (
  11. "role_id" SERIAL PRIMARY KEY,
  12. "company_id" INTEGER NOT NULL,
  13. "role_name" TEXT NOT NULL,
  14. "role_permission" JSONB NOT NULL,
  15. "role_flag" TEXT NOT NULL,
  16. CHECK (jsonb_typeof("role_permission") = 'object'),
  17. FOREIGN KEY ("company_id") REFERENCES "company" ("company_id")
  18. );
  19. CREATE TABLE "status" (
  20. "status_id" SERIAL PRIMARY KEY,
  21. "status_status" TEXT NOT NULL
  22. );
  23. CREATE TABLE "cpr" (
  24. "cpr_id" SERIAL PRIMARY KEY
  25. );
  26. CREATE TABLE "commodities" (
  27. "commodities_id" SERIAL PRIMARY KEY,
  28. "commodities_name" TEXT NOT NULL,
  29. "commodities_flag" TEXT NOT NULL
  30. );
  31. CREATE TABLE "wallet" (
  32. "wallet_id" SERIAL PRIMARY KEY,
  33. "company_id" INTEGER NOT NULL,
  34. "wallet_public_key" TEXT NOT NULL,
  35. "wallet_private_key" TEXT NOT NULL,
  36. "wallet_flag" TEXT NOT NULL,
  37. "chain_id" INTEGER NOT NULL,
  38. FOREIGN KEY ("company_id") REFERENCES "company" ("company_id"),
  39. FOREIGN KEY ("chain_id") REFERENCES "chain" ("chain_id")
  40. );
  41. CREATE TABLE "currency" (
  42. "currency_id" SERIAL PRIMARY KEY,
  43. "currency_external_id" TEXT NOT NULL,
  44. "currency_name" TEXT NOT NULL,
  45. "currency_digits" INTEGER NOT NULL,
  46. "chain_id" INTEGER NOT NULL,
  47. "currency_flag" TEXT NOT NULL,
  48. FOREIGN KEY ("chain_id") REFERENCES "chain" ("chain_id")
  49. );
  50. CREATE TABLE "token" (
  51. "token_id" SERIAL PRIMARY KEY,
  52. "token_external_id" TEXT NOT NULL,
  53. "token_commodities_amount" INTEGER NOT NULL,
  54. "token_flag" TEXT NOT NULL,
  55. "token_commodities_value" INTEGER NOT NULL,
  56. "wallet_id" INTEGER NOT NULL,
  57. "chain_id" INTEGER NOT NULL,
  58. "commodities_id" INTEGER NOT NULL,
  59. "cpr_id" INTEGER NOT NULL,
  60. FOREIGN KEY ("wallet_id") REFERENCES "wallet" ("wallet_id"),
  61. FOREIGN KEY ("chain_id") REFERENCES "chain" ("chain_id"),
  62. FOREIGN KEY ("commodities_id") REFERENCES "commodities" ("commodities_id"),
  63. FOREIGN KEY ("cpr_id") REFERENCES "cpr" ("cpr_id")
  64. );
  65. CREATE TABLE "user" (
  66. "user_id" SERIAL PRIMARY KEY,
  67. "user_name" TEXT NOT NULL,
  68. "user_email" TEXT NOT NULL UNIQUE,
  69. "user_password" TEXT NOT NULL,
  70. "user_phone" TEXT NOT NULL,
  71. "user_address" TEXT NOT NULL,
  72. "user_city" TEXT NOT NULL,
  73. "user_state" TEXT NOT NULL,
  74. "user_zip" TEXT NOT NULL,
  75. "user_country" TEXT NOT NULL,
  76. "user_kyc" INTEGER NOT NULL,
  77. "user_birthdate" INTEGER NOT NULL,
  78. "user_cpf" TEXT NOT NULL,
  79. "company_id" INTEGER NOT NULL,
  80. "role_id" INTEGER NOT NULL,
  81. "user_flag" TEXT NOT NULL,
  82. FOREIGN KEY ("company_id") REFERENCES "company" ("company_id"),
  83. FOREIGN KEY ("role_id") REFERENCES "role" ("role_id")
  84. );
  85. CREATE TABLE "tx_coin" (
  86. "tx_coin_id" TEXT PRIMARY KEY,
  87. "tx_coin_value" TEXT NOT NULL,
  88. "tx_coin_flag" TEXT NOT NULL,
  89. "tx_coin_ts" INTEGER NOT NULL,
  90. "tx_coin_from_address" TEXT NOT NULL,
  91. "tx_coin_to_address" TEXT NOT NULL,
  92. "currency_id" INTEGER NOT NULL,
  93. "chain_id" INTEGER NOT NULL,
  94. FOREIGN KEY ("currency_id") REFERENCES "currency" ("currency_id"),
  95. FOREIGN KEY ("chain_id") REFERENCES "chain" ("chain_id")
  96. );
  97. CREATE TABLE "tx_token" (
  98. "tx_token_id" TEXT PRIMARY KEY,
  99. "tx_token_flag" TEXT NOT NULL,
  100. "tx_token_ts" INTEGER NOT NULL,
  101. "tx_token_from_address" TEXT NOT NULL,
  102. "tx_token_to_address" TEXT NOT NULL,
  103. "token_id" INTEGER NOT NULL,
  104. "chain_id" INTEGER NOT NULL,
  105. FOREIGN KEY ("token_id") REFERENCES "token" ("token_id"),
  106. FOREIGN KEY ("chain_id") REFERENCES "chain" ("chain_id")
  107. );
  108. CREATE TABLE "orderbook" (
  109. "orderbook_id" SERIAL PRIMARY KEY,
  110. "orderbook_flag" TEXT NOT NULL,
  111. "orderbook_ts" INTEGER NOT NULL,
  112. "orderbook_is_token" BOOLEAN NOT NULL, -- true = venda, false = compra
  113. "orderbook_amount" TEXT NOT NULL,
  114. "status_id" INTEGER NOT NULL,
  115. "user_id" INTEGER NOT NULL,
  116. "wallet_id" INTEGER NOT NULL,
  117. "token_id" INTEGER,
  118. "currency_id" INTEGER,
  119. "chain_id" INTEGER NOT NULL,
  120. FOREIGN KEY ("status_id") REFERENCES "status" ("status_id"),
  121. FOREIGN KEY ("user_id") REFERENCES "user" ("user_id"),
  122. FOREIGN KEY ("wallet_id") REFERENCES "wallet" ("wallet_id"),
  123. FOREIGN KEY ("token_id") REFERENCES "token" ("token_id"),
  124. FOREIGN KEY ("currency_id") REFERENCES "currency" ("currency_id"),
  125. FOREIGN KEY ("chain_id") REFERENCES "chain" ("chain_id")
  126. );