fix(sql): migrate0 as postgres and migrate1 as minhtran
This commit is contained in:
		@@ -1,87 +1,29 @@
 | 
				
			|||||||
 | 
					-- run these as postgres
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Create the user 'minhtran' if it does not exist
 | 
				
			||||||
 | 
					DO
 | 
				
			||||||
 | 
					$$
 | 
				
			||||||
 | 
					    BEGIN
 | 
				
			||||||
 | 
					        IF NOT EXISTS (SELECT
 | 
				
			||||||
 | 
					                       FROM pg_catalog.pg_roles
 | 
				
			||||||
 | 
					                       WHERE rolname = 'minhtran') THEN
 | 
				
			||||||
 | 
					            CREATE ROLE minhtran LOGIN PASSWORD 'password';
 | 
				
			||||||
 | 
					        END IF;
 | 
				
			||||||
 | 
					    END
 | 
				
			||||||
 | 
					$$;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Terminate all connections to the database
 | 
				
			||||||
 | 
					REVOKE CONNECT ON DATABASE assignment1 FROM PUBLIC;
 | 
				
			||||||
 | 
					SELECT pg_terminate_backend(pg_stat_activity.pid)
 | 
				
			||||||
 | 
					FROM pg_stat_activity
 | 
				
			||||||
 | 
					WHERE pg_stat_activity.datname = 'assignment1'
 | 
				
			||||||
 | 
					  AND pid <> pg_backend_pid();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Drop the database
 | 
				
			||||||
 | 
					DROP DATABASE IF EXISTS "assignment1";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Create the new database
 | 
				
			||||||
CREATE DATABASE "assignment1";
 | 
					CREATE DATABASE "assignment1";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CREATE SCHEMA IF NOT EXISTS "assignment 1";
 | 
					-- Grant all privileges on the new database to 'minhtran'
 | 
				
			||||||
 | 
					GRANT ALL PRIVILEGES ON DATABASE "assignment1" TO minhtran;
 | 
				
			||||||
CREATE DOMAIN canada_postal_code AS VARCHAR(7)
 | 
					 | 
				
			||||||
    CHECK (VALUE ~ '^[A-Z]\d[A-Z]\s?\d[A-Z]\d$');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CREATE TYPE canadian_province AS ENUM (
 | 
					 | 
				
			||||||
    'AB', -- Alberta
 | 
					 | 
				
			||||||
    'BC', -- British Columbia
 | 
					 | 
				
			||||||
    'MB', -- Manitoba
 | 
					 | 
				
			||||||
    'NB', -- New Brunswick
 | 
					 | 
				
			||||||
    'NL', -- Newfoundland and Labrador
 | 
					 | 
				
			||||||
    'NS', -- Nova Scotia
 | 
					 | 
				
			||||||
    'NT', -- Northwest Territories
 | 
					 | 
				
			||||||
    'NU', -- Nunavut
 | 
					 | 
				
			||||||
    'ON', -- Ontario
 | 
					 | 
				
			||||||
    'PE', -- Prince Edward Island
 | 
					 | 
				
			||||||
    'QC', -- Quebec
 | 
					 | 
				
			||||||
    'SK', -- Saskatchewan
 | 
					 | 
				
			||||||
    'YT' -- Yukon
 | 
					 | 
				
			||||||
    );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CREATE TABLE "assignment 1".Donors
 | 
					 | 
				
			||||||
(
 | 
					 | 
				
			||||||
    donorID       INT         NOT NULL,
 | 
					 | 
				
			||||||
    firstName     VARCHAR(50) NOT NULL,
 | 
					 | 
				
			||||||
    lastName      VARCHAR(50) NOT NULL,
 | 
					 | 
				
			||||||
    middleInitial CHAR(1),
 | 
					 | 
				
			||||||
    dateOfBirth   DATE,
 | 
					 | 
				
			||||||
    address       VARCHAR(100),
 | 
					 | 
				
			||||||
    city          VARCHAR(50),
 | 
					 | 
				
			||||||
    postalCode    canada_postal_code,
 | 
					 | 
				
			||||||
    province      canadian_province,
 | 
					 | 
				
			||||||
    gender        CHAR(1),
 | 
					 | 
				
			||||||
    SSN           VARCHAR(11),
 | 
					 | 
				
			||||||
    hobby         VARCHAR(100),
 | 
					 | 
				
			||||||
    phone         VARCHAR(15),
 | 
					 | 
				
			||||||
    email         VARCHAR(100),
 | 
					 | 
				
			||||||
    CONSTRAINT donors_pk PRIMARY KEY (donorID),
 | 
					 | 
				
			||||||
    CONSTRAINT valid_canada_postal_code CHECK (postalCode ~ '^[A-Z]\d[A-Z]\s?\d[A-Z]\d$'),
 | 
					 | 
				
			||||||
    CONSTRAINT valid_gender CHECK (gender IN ('M', 'F', 'O')),
 | 
					 | 
				
			||||||
    CONSTRAINT valid_ssn CHECK (SSN ~ '^\d{3}-\d{3}-\d{3}$'),
 | 
					 | 
				
			||||||
    CONSTRAINT valid_email CHECK (email ~ '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}$')
 | 
					 | 
				
			||||||
);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CREATE TABLE "assignment 1".Donations
 | 
					 | 
				
			||||||
(
 | 
					 | 
				
			||||||
    dID     INT            NOT NULL,
 | 
					 | 
				
			||||||
    donorID INT            NOT NULL,
 | 
					 | 
				
			||||||
    date    DATE           NOT NULL,
 | 
					 | 
				
			||||||
    type    VARCHAR(7)     NOT NULL,
 | 
					 | 
				
			||||||
    amount  DECIMAL(10, 2) NOT NULL,
 | 
					 | 
				
			||||||
    CONSTRAINT donations_pk PRIMARY KEY (dID),
 | 
					 | 
				
			||||||
    CONSTRAINT donations_donorID_fk FOREIGN KEY (donorID) REFERENCES "assignment 1".Donors (donorID),
 | 
					 | 
				
			||||||
    CONSTRAINT valid_donation_type CHECK (type IN ('money', 'product'))
 | 
					 | 
				
			||||||
);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
create table "assignment 1".Products
 | 
					 | 
				
			||||||
(
 | 
					 | 
				
			||||||
    pID         INT            NOT NULL,
 | 
					 | 
				
			||||||
    description varchar(100),
 | 
					 | 
				
			||||||
    date        DATE           NOT NULL,
 | 
					 | 
				
			||||||
    price       DECIMAL(10, 2) NOT NULL,
 | 
					 | 
				
			||||||
    weight      DECIMAL(5, 2)  NOT NULL,
 | 
					 | 
				
			||||||
    CONSTRAINT products_pk PRIMARY KEY (pID)
 | 
					 | 
				
			||||||
);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CREATE TABLE "assignment 1".Sales
 | 
					 | 
				
			||||||
(
 | 
					 | 
				
			||||||
    sID         INT                      NOT NULL,
 | 
					 | 
				
			||||||
    date        DATE                     NOT NULL,
 | 
					 | 
				
			||||||
    amount      DECIMAL(10, 2)           NOT NULL,
 | 
					 | 
				
			||||||
    totalWeight DECIMAL(10, 2)           NOT NULL,
 | 
					 | 
				
			||||||
    deliveryFee DECIMAL(10, 2) DEFAULT 0 NOT NULL,
 | 
					 | 
				
			||||||
    CONSTRAINT sales_pk primary key (sID),
 | 
					 | 
				
			||||||
    CONSTRAINT valid_delivery_fee CHECK (deliveryFee >= 0)
 | 
					 | 
				
			||||||
);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CREATE TABLE "assignment 1".SalesItems
 | 
					 | 
				
			||||||
(
 | 
					 | 
				
			||||||
    sID INT NOT NULL,
 | 
					 | 
				
			||||||
    pID INT NOT NULL,
 | 
					 | 
				
			||||||
    PRIMARY KEY (sID, pID),
 | 
					 | 
				
			||||||
    FOREIGN KEY (sID) REFERENCES "assignment 1".Sales (sID),
 | 
					 | 
				
			||||||
    FOREIGN KEY (pID) REFERENCES "assignment 1".Products (pID)
 | 
					 | 
				
			||||||
);
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										94
									
								
								src/main/sql/migrate1.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								src/main/sql/migrate1.sql
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,94 @@
 | 
				
			|||||||
 | 
					-- Run this as minh tran user
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Create the schema if it doesn't exist
 | 
				
			||||||
 | 
					CREATE SCHEMA IF NOT EXISTS "assignment 1";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Drop the domain canada_postal_code if it exists
 | 
				
			||||||
 | 
					DROP DOMAIN IF EXISTS canada_postal_code;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Drop the type canadian_province if it exists
 | 
				
			||||||
 | 
					DROP TYPE IF EXISTS canadian_province;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CREATE DOMAIN canada_postal_code AS VARCHAR(7)
 | 
				
			||||||
 | 
					    CHECK (VALUE ~ '^[A-Z]\d[A-Z]\s?\d[A-Z]\d$');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CREATE TYPE canadian_province AS ENUM (
 | 
				
			||||||
 | 
					    'AB', -- Alberta
 | 
				
			||||||
 | 
					    'BC', -- British Columbia
 | 
				
			||||||
 | 
					    'MB', -- Manitoba
 | 
				
			||||||
 | 
					    'NB', -- New Brunswick
 | 
				
			||||||
 | 
					    'NL', -- Newfoundland and Labrador
 | 
				
			||||||
 | 
					    'NS', -- Nova Scotia
 | 
				
			||||||
 | 
					    'NT', -- Northwest Territories
 | 
				
			||||||
 | 
					    'NU', -- Nunavut
 | 
				
			||||||
 | 
					    'ON', -- Ontario
 | 
				
			||||||
 | 
					    'PE', -- Prince Edward Island
 | 
				
			||||||
 | 
					    'QC', -- Quebec
 | 
				
			||||||
 | 
					    'SK', -- Saskatchewan
 | 
				
			||||||
 | 
					    'YT' -- Yukon
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CREATE TABLE "assignment 1".Donors
 | 
				
			||||||
 | 
					(
 | 
				
			||||||
 | 
					    donorID       INT         NOT NULL,
 | 
				
			||||||
 | 
					    firstName     VARCHAR(50) NOT NULL,
 | 
				
			||||||
 | 
					    lastName      VARCHAR(50) NOT NULL,
 | 
				
			||||||
 | 
					    middleInitial CHAR(1),
 | 
				
			||||||
 | 
					    dateOfBirth   DATE,
 | 
				
			||||||
 | 
					    address       VARCHAR(100),
 | 
				
			||||||
 | 
					    city          VARCHAR(50),
 | 
				
			||||||
 | 
					    postalCode    canada_postal_code,
 | 
				
			||||||
 | 
					    province      canadian_province,
 | 
				
			||||||
 | 
					    gender        CHAR(1),
 | 
				
			||||||
 | 
					    SSN           VARCHAR(11),
 | 
				
			||||||
 | 
					    hobby         VARCHAR(100),
 | 
				
			||||||
 | 
					    phone         VARCHAR(15),
 | 
				
			||||||
 | 
					    email         VARCHAR(100),
 | 
				
			||||||
 | 
					    CONSTRAINT donors_pk PRIMARY KEY (donorID),
 | 
				
			||||||
 | 
					    CONSTRAINT valid_canada_postal_code CHECK (postalCode ~ '^[A-Z]\d[A-Z]\s?\d[A-Z]\d$'),
 | 
				
			||||||
 | 
					    CONSTRAINT valid_gender CHECK (gender IN ('M', 'F', 'O')),
 | 
				
			||||||
 | 
					    CONSTRAINT valid_ssn CHECK (SSN ~ '^\d{3}-\d{3}-\d{3}$'),
 | 
				
			||||||
 | 
					    CONSTRAINT valid_email CHECK (email ~ '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}$')
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CREATE TABLE "assignment 1".Donations
 | 
				
			||||||
 | 
					(
 | 
				
			||||||
 | 
					    dID     INT            NOT NULL,
 | 
				
			||||||
 | 
					    donorID INT            NOT NULL,
 | 
				
			||||||
 | 
					    date    DATE           NOT NULL,
 | 
				
			||||||
 | 
					    type    VARCHAR(7)     NOT NULL,
 | 
				
			||||||
 | 
					    amount  DECIMAL(10, 2) NOT NULL,
 | 
				
			||||||
 | 
					    CONSTRAINT donations_pk PRIMARY KEY (dID),
 | 
				
			||||||
 | 
					    CONSTRAINT donations_donorID_fk FOREIGN KEY (donorID) REFERENCES "assignment 1".Donors (donorID),
 | 
				
			||||||
 | 
					    CONSTRAINT valid_donation_type CHECK (type IN ('money', 'product'))
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					create table "assignment 1".Products
 | 
				
			||||||
 | 
					(
 | 
				
			||||||
 | 
					    pID         INT            NOT NULL,
 | 
				
			||||||
 | 
					    description varchar(100),
 | 
				
			||||||
 | 
					    date        DATE           NOT NULL,
 | 
				
			||||||
 | 
					    price       DECIMAL(10, 2) NOT NULL,
 | 
				
			||||||
 | 
					    weight      DECIMAL(5, 2)  NOT NULL,
 | 
				
			||||||
 | 
					    CONSTRAINT products_pk PRIMARY KEY (pID)
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CREATE TABLE "assignment 1".Sales
 | 
				
			||||||
 | 
					(
 | 
				
			||||||
 | 
					    sID         INT                      NOT NULL,
 | 
				
			||||||
 | 
					    date        DATE                     NOT NULL,
 | 
				
			||||||
 | 
					    amount      DECIMAL(10, 2)           NOT NULL,
 | 
				
			||||||
 | 
					    totalWeight DECIMAL(10, 2)           NOT NULL,
 | 
				
			||||||
 | 
					    deliveryFee DECIMAL(10, 2) DEFAULT 0 NOT NULL,
 | 
				
			||||||
 | 
					    CONSTRAINT sales_pk primary key (sID),
 | 
				
			||||||
 | 
					    CONSTRAINT valid_delivery_fee CHECK (deliveryFee >= 0)
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CREATE TABLE "assignment 1".SalesItems
 | 
				
			||||||
 | 
					(
 | 
				
			||||||
 | 
					    sID INT NOT NULL,
 | 
				
			||||||
 | 
					    pID INT NOT NULL,
 | 
				
			||||||
 | 
					    PRIMARY KEY (sID, pID),
 | 
				
			||||||
 | 
					    FOREIGN KEY (sID) REFERENCES "assignment 1".Sales (sID),
 | 
				
			||||||
 | 
					    FOREIGN KEY (pID) REFERENCES "assignment 1".Products (pID)
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
		Reference in New Issue
	
	Block a user