Skip to content

Commit

Permalink
Add referential actions support to postgres parser
Browse files Browse the repository at this point in the history
  • Loading branch information
flemeur committed Nov 11, 2019
1 parent 9ccb786 commit 3e6bc94
Show file tree
Hide file tree
Showing 8 changed files with 953 additions and 513 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
CREATE TABLE "orders" (
"id" SERIAL PRIMARY KEY,
"user_id" int NOT NULL,
"created_at" datetime DEFAULT (now())
);

CREATE TABLE "order_items" (
"id" SERIAL PRIMARY KEY,
"order_id" int NOT NULL,
"product_id" int DEFAULT null,
"quantity" int DEFAULT 1
);

CREATE TABLE "products" (
"id" SERIAL PRIMARY KEY,
"name" varchar,
"price" decimal(10,4),
"created_at" datetime DEFAULT (now())
);

CREATE TABLE "users" (
"id" SERIAL PRIMARY KEY,
"name" varchar,
"email" varchar UNIQUE,
"date_of_birth" datetime,
"created_at" datetime DEFAULT (now()),
"country_code" int NOT NULL
);

CREATE TABLE "countries" (
"code" int PRIMARY KEY,
"name" varchar,
"continent_name" varchar
);

ALTER TABLE "orders" ADD FOREIGN KEY ("user_id") REFERENCES "users" ("id") ON DELETE RESTRICT;

ALTER TABLE "order_items" ADD FOREIGN KEY ("order_id") REFERENCES "orders" ("id") ON DELETE CASCADE;

ALTER TABLE "order_items" ADD FOREIGN KEY ("product_id") REFERENCES "products" ("id") ON DELETE SET NULL;

ALTER TABLE "users" ADD FOREIGN KEY ("country_code") REFERENCES "countries" ("code") ON DELETE NO ACTION;
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
Table "orders" {
"id" int [pk, increment]
"user_id" int [not null]
"created_at" datetime [default: `now()`]
}

Table "order_items" {
"id" int [pk, increment]
"order_id" int [not null]
"product_id" int [default: null]
"quantity" int [default: 1]
}

Table "products" {
"id" int [pk, increment]
"name" varchar
"price" "decimal(10, 4)"
"created_at" datetime [default: `now()`]
}

Table "users" {
"id" int [pk, increment]
"name" varchar
"email" varchar [unique]
"date_of_birth" datetime
"created_at" datetime [default: `now()`]
"country_code" int [not null]
}

Table "countries" {
"code" int [pk]
"name" varchar
"continent_name" varchar
}

Ref:"users"."id" < "orders"."user_id" [delete: restrict]

Ref:"orders"."id" < "order_items"."order_id" [delete: cascade]

Ref:"products"."id" < "order_items"."product_id" [delete: set null]

Ref:"countries"."code" < "users"."country_code" [delete: no action]
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
CREATE TABLE "orders" (
"id" SERIAL PRIMARY KEY,
"user_id" int NOT NULL,
"created_at" datetime DEFAULT (now())
);

CREATE TABLE "order_items" (
"id" SERIAL PRIMARY KEY,
"order_id" int NOT NULL,
"product_id" int DEFAULT null,
"quantity" int DEFAULT 1
);

CREATE TABLE "products" (
"id" SERIAL PRIMARY KEY,
"name" varchar,
"price" decimal(10,4),
"created_at" datetime DEFAULT (now())
);

CREATE TABLE "users" (
"id" SERIAL PRIMARY KEY,
"name" varchar,
"email" varchar UNIQUE,
"date_of_birth" datetime,
"created_at" datetime DEFAULT (now()),
"country_code" int NOT NULL
);

CREATE TABLE "countries" (
"code" int PRIMARY KEY,
"name" varchar,
"continent_name" varchar
);

ALTER TABLE "orders" ADD FOREIGN KEY ("user_id") REFERENCES "users" ("id") ON DELETE RESTRICT;

ALTER TABLE "order_items" ADD FOREIGN KEY ("order_id") REFERENCES "orders" ("id") ON DELETE CASCADE;

ALTER TABLE "order_items" ADD FOREIGN KEY ("product_id") REFERENCES "products" ("id") ON DELETE SET NULL;

ALTER TABLE "users" ADD FOREIGN KEY ("country_code") REFERENCES "countries" ("code") ON DELETE NO ACTION;
Loading

0 comments on commit 3e6bc94

Please sign in to comment.