PostgresBuildDatabase.sql 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. -- Need to drop functions first, because Postgres stores the table relations
  2. DROP FUNCTION IF EXISTS SelectPeople();
  3. DROP FUNCTION IF EXISTS SelectPeopleWithParam(age integer);
  4. DROP FUNCTION IF EXISTS CountPeople();
  5. DROP FUNCTION IF EXISTS CountPeopleWithParam(age integer);
  6. DROP FUNCTION IF EXISTS UpdatePeople();
  7. DROP FUNCTION IF EXISTS UpdatePeopleWithParam(age integer);
  8. DROP TABLE IF EXISTS "OrderLines";
  9. DROP TABLE IF EXISTS "Orders";
  10. DROP TABLE IF EXISTS "People";
  11. DROP TABLE IF EXISTS "SpecificOrderLines";
  12. DROP TABLE IF EXISTS "SpecificOrders";
  13. DROP TABLE IF EXISTS "SpecificPeople";
  14. DROP TABLE IF EXISTS "TransactionLogs";
  15. DROP TABLE IF EXISTS "Note";
  16. CREATE TABLE "People" (
  17. "Id" UUID NOT NULL PRIMARY KEY,
  18. "FullName" VARCHAR(255),
  19. "Age" BIGINT NOT NULL,
  20. "Height" INT NOT NULL,
  21. "Dob" TIMESTAMP NULL
  22. );
  23. CREATE TABLE "Orders" (
  24. "Id" SERIAL PRIMARY KEY NOT NULL,
  25. "PersonId" UUID NOT NULL,
  26. "PoNumber" VARCHAR(15) NOT NULL,
  27. "OrderStatus" INT NOT NULL,
  28. "CreatedOn" TIMESTAMP NOT NULL,
  29. "CreatedBy" VARCHAR(255) NOT NULL,
  30. CONSTRAINT "FK_Orders_People" FOREIGN KEY ("PersonId") REFERENCES "People"("Id")
  31. );
  32. CREATE TABLE "OrderLines" (
  33. "Id" SERIAL PRIMARY KEY NOT NULL,
  34. "OrderId" INT NOT NULL,
  35. "Qty" SMALLINT NOT NULL,
  36. "Status" SMALLINT NOT NULL,
  37. "SellPrice" NUMERIC(10, 4) NOT NULL,
  38. CONSTRAINT "FK_OrderLines_Orders" FOREIGN KEY ("OrderId") REFERENCES "Orders"("Id")
  39. );
  40. CREATE TABLE "SpecificPeople" (
  41. "Id" UUID NOT NULL PRIMARY KEY,
  42. "FullName" VARCHAR(255),
  43. "Age" BIGINT NOT NULL,
  44. "Height" INT NOT NULL,
  45. "Dob" TIMESTAMP NULL
  46. );
  47. CREATE TABLE "SpecificOrders" (
  48. "Id" SERIAL PRIMARY KEY NOT NULL,
  49. "PersonId" UUID NOT NULL,
  50. "PoNumber" VARCHAR(15) NOT NULL,
  51. "OrderStatus" INT NOT NULL,
  52. "CreatedOn" TIMESTAMP NOT NULL,
  53. "CreatedBy" VARCHAR(255) NOT NULL,
  54. CONSTRAINT "FK_SpecificOrders_SpecificPeople" FOREIGN KEY ("PersonId") REFERENCES "SpecificPeople"("Id")
  55. );
  56. CREATE TABLE "SpecificOrderLines" (
  57. "Id" SERIAL PRIMARY KEY NOT NULL,
  58. "OrderId" INT NOT NULL,
  59. "Qty" SMALLINT NOT NULL,
  60. "Status" SMALLINT NOT NULL,
  61. "SellPrice" NUMERIC(10, 4) NOT NULL,
  62. CONSTRAINT "FK_SpecificOrderLines_SpecificOrders" FOREIGN KEY ("OrderId") REFERENCES "SpecificOrders"("Id")
  63. );
  64. CREATE TABLE "TransactionLogs" (
  65. "Description" VARCHAR(5000) NOT NULL,
  66. "CreatedOn" TIMESTAMP NOT NULL
  67. );
  68. CREATE TABLE "Note" (
  69. "Id" SERIAL PRIMARY KEY NOT NULL,
  70. "Text" VARCHAR(5000) NOT NULL,
  71. "CreatedOn" TIMESTAMP NOT NULL
  72. );
  73. -- Investigation Tables
  74. DROP TABLE IF EXISTS "BugInvestigation_10R9LZYK";
  75. CREATE TABLE "BugInvestigation_10R9LZYK" (
  76. "Id" SERIAL PRIMARY KEY NOT NULL,
  77. "TestColumn1" BYTEA
  78. );
  79. DROP TABLE IF EXISTS "BugInvestigation_7K2TX4VR";
  80. CREATE TABLE "BugInvestigation_7K2TX4VR" (
  81. "Id" SERIAL PRIMARY KEY NOT NULL,
  82. "Json1" JSON NOT NULL,
  83. "Json2" JSONB NOT NULL
  84. );
  85. -- Stored Procedures
  86. CREATE FUNCTION SelectPeople()
  87. RETURNS SETOF "People"
  88. AS $$ BEGIN RETURN QUERY SELECT * FROM "People"; END $$
  89. LANGUAGE plpgsql;
  90. CREATE FUNCTION SelectPeopleWithParam(age integer)
  91. RETURNS SETOF "People"
  92. AS $$ BEGIN RETURN QUERY SELECT * FROM "People" WHERE "Age" > age; END $$
  93. LANGUAGE plpgsql;
  94. CREATE FUNCTION CountPeople()
  95. RETURNS integer
  96. AS $$ BEGIN RETURN (SELECT COUNT(*) FROM "People"); END $$
  97. LANGUAGE plpgsql;
  98. CREATE FUNCTION CountPeopleWithParam(age integer)
  99. RETURNS integer
  100. AS $$ BEGIN RETURN (SELECT COUNT(*) FROM "People" WHERE "Age" > age); END $$
  101. LANGUAGE plpgsql;
  102. CREATE FUNCTION UpdatePeople()
  103. RETURNS VOID
  104. AS $$ BEGIN UPDATE "People" SET "FullName" = 'Updated'; END $$
  105. LANGUAGE plpgsql;
  106. CREATE FUNCTION UpdatePeopleWithParam(age integer)
  107. RETURNS VOID
  108. AS $$ BEGIN UPDATE "People" SET "FullName" = 'Updated' WHERE "Age" > age; END $$
  109. LANGUAGE plpgsql;