descholar-ceo/AnnounceIT

View on GitHub
server/v2/models/configs/queries.js

Summary

Maintainability
A
0 mins
Test Coverage
/**
 * ===========================================================
 * ===========================================================
 * ==================1. TABLE USERS===========================
 * ===========================================================
 * ===========================================================
 **/
// export const CREATE_DB_ANNOUNCEIT = `
// SELECT 'CREATE DATABASE announceit_db' WHERE NOT EXISTS(SELECT FROM pg_database WHERE datname='announceit_db');`;

export const CREATE_TABLE_USERS = `
    DROP TABLE IF EXISTS users CASCADE; 
    CREATE TABLE IF NOT EXISTS users (
    id SERIAL PRIMARY KEY,
    fname VARCHAR(255),
    lname VARCHAR(255),
    address VARCHAR(255),
    phonenumber VARCHAR(255),
    email VARCHAR(50) UNIQUE,
    password VARCHAR(255),
    isadmin BOOLEAN);
    `;

export const GET_USER_BY_EMAIL = `
SELECT * FROM users WHERE email=$1;
`;

/** CHECKING IF AN EMAIL EXISTS FROM TABLE USERS OR NOT */
export const CHECK_EMAIL_FROM_TABLE_USERS = `
SELECT EXISTS(SELECT 1 FROM users WHERE email = $1);
`;

    //ADDING NEW USER
export const ADD_NEW_USER = `
INSERT INTO users(fname, lname, address, phonenumber, email, password, isadmin) 
VALUES($1, $2, $3, $4, $5, $6, $7) RETURNING*;    
`

// UPDATE USER PASSWORD
export const UPDATE_USER_PASSWORD = `
UPDATE users SET password=$1 WHERE email=$2 RETURNING*;
`;

// ADDING SAMPLE USERS FOR TEST
export const ADD_SAMPLE_USERS = (hashedPassword) => (`INSERT INTO users(
        fname, lname, address, phonenumber, email, password, isadmin) VALUES
    ('nezago','emma','Kigali','0782229462','emmamugira@gmail.com','${hashedPassword}',true),
    ('descholar','emma','Kigali','0782229462','descholar.stech@gmail.com','${hashedPassword}',false),
    ('descholar','NezaGo','Kigali','0782229462','descholar.stechnologies@gmail.com','${hashedPassword}',true);`);


/**
 * ===========================================================
 * ===========================================================
 * ===================2. TABLE ANNOUNCEMENTS==================
 * ===========================================================
 * ===========================================================
 */

export const CREATE_TABLE_ANNOUNCEMENTS = `
    DROP TABLE IF EXISTS announcements CASCADE; 
    CREATE TABLE IF NOT EXISTS announcements (
    announcementid SERIAL PRIMARY KEY,
    announcementowner INTEGER,
    announcementstatus VARCHAR(255),
    annoucemmenttext VARCHAR(255),
    announcementstartdate DATE,
    announcementsenddate DATE,
    CONSTRAINT announcement_ownership FOREIGN KEY(announcementowner) 
    REFERENCES users(id));
    `;

    //ADD ANNOUNCEMENT DATA SAMPLE FOR TESTS
export const ADD_SAMPLE_ANNOUNCEMENTS = `
INSERT INTO announcements(
    announcementowner,announcementstatus,annoucemmenttext,announcementstartdate,announcementsenddate)
    VALUES(1,'Pending','default','2020-01-02','2020-12-31'),
    (1,'active','default','2020-01-02','2020-12-31');`;

    //ADD NEW ANNOUNCEMENT
export const ADD_NEW_ANNOUNCEMENT = `
    INSERT INTO announcements(
    announcementowner,announcementstatus,annoucemmenttext,announcementstartdate,announcementsenddate)
    VALUES($1,$2,$3,$4,$5) RETURNING*;
`;

//GET ALL FOR THE CURRENT USER
export const GET_ALL_ANNOUNCEMENTS_FOR_CURRENT_USER = `
SELECT * FROM announcements WHERE announcementowner=$1 ORDER BY announcementid DESC;
`;

// GET ANNOUNCEMENT BY ID
export const GET_ANNOUNCEMENT_BY_ID = `
SELECT * FROM announcements WHERE announcementid=$1 AND announcementowner=$2;
`;

// GET ANNOUNCEMENT BY STATUS
export const GET_ANNOUNCEMENT_BY_STATUS = `
SELECT * FROM announcements WHERE announcementstatus=$1 AND announcementowner=$2 ORDER BY announcementid DESC;
`;

//GET ALL ANNOUNCEMENTS
export const GET_ALL_ANNOUNCEMENTS = `
SELECT * FROM announcements ORDER BY announcementid DESC;
`;

// DELETE ANNOUNCEMENT BY ID
export const DELETE_ANNOUNCEMENT = `
DELETE FROM announcements WHERE announcementid=$1 RETURNING*;
`;

// UPDATE STATUS OF ANNOUNCEMENT
export const UPDATE_ANNOUNCEMENT_STATUS = `
UPDATE announcements SET announcementstatus=$1 WHERE announcementid=$2 RETURNING*;
`;

// USER UPDATE HIS ANNOUNCEMENT
export const USER_UPDATE_HIS_ANNOUNCEMENT = `
UPDATE announcements SET annoucemmenttext=$1 WHERE announcementid=$2 AND announcementowner=$3 RETURNING*;`;

/** CHECKING IF AN EMAIL EXISTS FROM TABLE USERS OR NOT */
export const CHECK_ANNOUNCEMENT_EXISTANCE = `
SELECT EXISTS(SELECT 1 FROM announcements WHERE announcementid = $1);
`;
/**
 * ==================================================================
 * ==================================================================
 * =======================3. TABLE FLAGS=============================
 * ==================================================================
 * ==================================================================
 */
export const CREATE_TABLE_FLAGS = `
    DROP TABLE IF EXISTS flags; 
    CREATE TABLE IF NOT EXISTS flags (
    id SERIAL PRIMARY KEY,
    announcement_id INTEGER,
    created_on TIMESTAMPTZ,
    reason VARCHAR(255),
    description VARCHAR(255));`;

    //ADD SAMPLE FLAG FOR TEST
export const ADD_FLAG_FOR_SAMPLE = `
INSERT INTO flags(announcement_id, created_on, reason, description) VALUES(1,NOW(),'RealEstate','RealEstate');
`;

    // ADD A NEW FLAG
export const ADD_NEW_FLAG = `
INSERT INTO flags(announcement_id, created_on, reason, description) VALUES($1,NOW(),$2,$3) RETURNING*;
`;

// GET A FLAG BY ACCOUNCEMENT ID
export const GET_A_FLAG_BY_ANNOUNC_ID = `
SELECT * FROM flags WHERE announcement_id=$1;
`;

// GET ALL FLAG OF PARTICULAR REASON
export const GET_PARICULAR_FLAG_BY_REASON = `
SELECT * FROM flags WHERE reason=$1 ORDER BY id DESC;
`;