adding endpoints
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
pub const CREATE_WORK_TIME_ENUM: &str = r#"
|
||||
DO $$
|
||||
BEGIN
|
||||
CREATE TYPE work_time AS ENUM ('morning', 'afternoon', 'evening');
|
||||
EXCEPTION
|
||||
WHEN duplicate_object THEN NULL;
|
||||
END $$;
|
||||
"#;
|
||||
|
||||
pub const CREATE_DAY_OF_WEEK_ENUM: &str = r#"
|
||||
DO $$
|
||||
BEGIN
|
||||
CREATE TYPE day_of_week AS ENUM (
|
||||
'sunday',
|
||||
'monday',
|
||||
'tuesday',
|
||||
'wednesday',
|
||||
'thursday',
|
||||
'friday',
|
||||
'saturday'
|
||||
);
|
||||
EXCEPTION
|
||||
WHEN duplicate_object THEN NULL;
|
||||
END $$;
|
||||
"#;
|
||||
|
||||
pub const CREATE_COMPANIES_TABLE: &str = r#"
|
||||
CREATE TABLE IF NOT EXISTS companies (
|
||||
id SERIAL PRIMARY KEY,
|
||||
name TEXT NOT NULL UNIQUE,
|
||||
date_created TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
date_updated TIMESTAMP NOT NULL DEFAULT NOW()
|
||||
);
|
||||
"#;
|
||||
|
||||
pub const CREATE_USERS_TABLE: &str = r#"
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id SERIAL PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
last_name TEXT NOT NULL,
|
||||
preference work_time NOT NULL,
|
||||
date_created TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
date_updated TIMESTAMP NOT NULL DEFAULT NOW()
|
||||
);
|
||||
"#;
|
||||
|
||||
pub const CREATE_COMPANY_USERS_TABLE: &str = r#"
|
||||
CREATE TABLE IF NOT EXISTS company_users (
|
||||
id SERIAL PRIMARY KEY,
|
||||
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
company_id INTEGER NOT NULL REFERENCES companies(id) ON DELETE CASCADE,
|
||||
date_created TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
date_updated TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
UNIQUE (user_id, company_id)
|
||||
);
|
||||
"#;
|
||||
|
||||
pub const CREATE_SCHEDULES_TABLE: &str = r#"
|
||||
CREATE TABLE IF NOT EXISTS schedules (
|
||||
id SERIAL PRIMARY KEY,
|
||||
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
enter_time TIMESTAMP NOT NULL,
|
||||
day_of_week day_of_week NOT NULL,
|
||||
out_time TIMESTAMP NOT NULL,
|
||||
date_created TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
date_updated TIMESTAMP NOT NULL DEFAULT NOW()
|
||||
);
|
||||
"#;
|
||||
|
||||
pub const CREATE_EMPLOYEE_WEEKLY_PREFERENCES_TABLE: &str = r#"
|
||||
CREATE TABLE IF NOT EXISTS employee_weekly_preferences (
|
||||
id SERIAL PRIMARY KEY,
|
||||
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
day_of_week day_of_week NOT NULL,
|
||||
first_preference work_time NOT NULL,
|
||||
second_preference work_time NOT NULL,
|
||||
third_preference work_time NOT NULL,
|
||||
date_created TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
date_updated TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
UNIQUE (user_id, day_of_week)
|
||||
);
|
||||
"#;
|
||||
|
||||
pub const ALTER_SCHEDULES_ADD_SHIFT: &str = r#"
|
||||
ALTER TABLE schedules
|
||||
ADD COLUMN IF NOT EXISTS shift work_time NOT NULL DEFAULT 'morning';
|
||||
"#;
|
||||
|
||||
pub const ALTER_SCHEDULES_DROP_OUT_TIME_NOT_NULL: &str = r#"
|
||||
ALTER TABLE schedules
|
||||
ALTER COLUMN out_time DROP NOT NULL;
|
||||
"#;
|
||||
|
||||
pub const CREATE_SCHEMA_QUERIES: [&str; 9] = [
|
||||
CREATE_WORK_TIME_ENUM,
|
||||
CREATE_DAY_OF_WEEK_ENUM,
|
||||
CREATE_COMPANIES_TABLE,
|
||||
CREATE_USERS_TABLE,
|
||||
CREATE_COMPANY_USERS_TABLE,
|
||||
CREATE_SCHEDULES_TABLE,
|
||||
CREATE_EMPLOYEE_WEEKLY_PREFERENCES_TABLE,
|
||||
ALTER_SCHEDULES_ADD_SHIFT,
|
||||
ALTER_SCHEDULES_DROP_OUT_TIME_NOT_NULL,
|
||||
];
|
||||
Reference in New Issue
Block a user