Advertisement
Guest User

Untitled

a guest
Feb 18th, 2020
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE OR REPLACE PROCEDURE enable_platform_user (tid VARCHAR(32))  
  2. AS $$
  3. BEGIN
  4.     UPDATE platform_user SET enabled = TRUE
  5.     WHERE platform_user.id = tid;
  6. END;
  7. $$ LANGUAGE plpgsql;
  8.  
  9. CREATE OR REPLACE PROCEDURE add_new_platform_user(tid VARCHAR(32), trole VARCHAR(50))
  10. AS $$
  11. BEGIN
  12.     INSERT INTO platform_user(id, role, enabled, created_at)
  13.     VALUES (tid, trole, FALSE, localtimestamp);
  14. END;
  15. $$ LANGUAGE plpgsql;
  16.  
  17. CREATE OR REPLACE PROCEDURE add_user_lang(tuser_id VARCHAR(32), tlang VARCHAR(2))
  18. AS $$
  19. BEGIN
  20.     INSERT INTO user_lang(user_id, lang)
  21.     VALUES (tuser_id, tlang);
  22. END;
  23. $$ LANGUAGE plpgsql;
  24.  
  25. CREATE OR REPLACE PROCEDURE create_user_profile_with_activation(
  26.     tuser_id VARCHAR(32),
  27.     temail          VARCHAR(200),
  28.     tfirst_name     VARCHAR(256),
  29.     tlast_name      VARCHAR(256),
  30.     tgender         VARCHAR(10),
  31.     tbirth_day      DATE,
  32.     tcountry        VARCHAR(2)
  33. ) AS $$
  34. BEGIN
  35.     INSERT INTO user_profile(user_id, email, first_name, last_name, gender, birth_day, country)
  36.     VALUES (tuser_id, temail, tfirst_name, tlast_name, tgender, tbirth_day, tcountry);
  37.     CALL enable_platform_user(tuser_id);
  38. END;
  39. $$ LANGUAGE plpgsql;
  40.  
  41. CREATE OR REPLACE PROCEDURE add_requester(tid VARCHAR(32))
  42. AS $$
  43. BEGIN
  44.     INSERT INTO requester(user_id, created_at)
  45.     VALUES (tid, localtimestamp);
  46. END;
  47. $$ LANGUAGE plpgsql;
  48.  
  49. CREATE OR REPLACE PROCEDURE add_worker(tid VARCHAR(32), teducation VARCHAR(10))
  50. AS $$
  51. BEGIN
  52.     INSERT INTO worker(user_id, education, created_at)
  53.     VALUES (tid, teducation, localtimestamp);
  54. END;
  55. $$ LANGUAGE plpgsql;
  56.  
  57. CREATE OR REPLACE PROCEDURE create_project(
  58.     tid                            BIGINT,
  59.     trequester_id                  VARCHAR(32),
  60.     tname                          VARCHAR(256),
  61.     tdescription                   TEXT,
  62.     tinstructions                  TEXT,
  63.     tfail_limit                    INT,
  64.     ttime_limit                    INT
  65. ) AS $$
  66. BEGIN
  67.     INSERT INTO project(id, requester_id, name, description, instructions, status, fail_limit, time_limit, created_at)
  68.     VALUES (tid, trequester_id, tname, tdescription, tinstructions, 'ACTIVE', tfail_limit, ttime_limit, localtimestamp);
  69. END;
  70. $$ LANGUAGE plpgsql;
  71.  
  72. CREATE OR REPLACE FUNCTION f() RETURNS TRIGGER AS
  73. $BODY$
  74. BEGIN
  75.     INSERT INTO
  76.         worker_balance(user_id)
  77.         VALUES (new.user_id);
  78.  
  79.     RETURN new;
  80. END;
  81. $BODY$
  82. language plpgsql;
  83.  
  84.  
  85. CREATE TRIGGER init_worker_balance
  86.      AFTER INSERT ON worker
  87.      FOR EACH ROW
  88.      EXECUTE PROCEDURE f();
  89.  
  90. CREATE OR REPLACE PROCEDURE create_skill(
  91.     tid                 BIGINT       ,
  92.     trequester_id       VARCHAR(32)  ,
  93.     tname               VARCHAR(256)    
  94. ) AS $$
  95. BEGIN
  96.     INSERT INTO skill(id, requester_id, name, created_at)
  97.     VALUES (tid, trequester_id, tname, localtimestamp);
  98. END;
  99. $$ LANGUAGE plpgsql;
  100.  
  101. CREATE OR REPLACE PROCEDURE add_worker_skill(
  102.     tid                 BIGINT      ,
  103.     tworker_id          VARCHAR(32) ,
  104.     tskill_id           BIGINT   ,
  105.     tvalue              INT            
  106. ) AS $$
  107. BEGIN
  108.     INSERT INTO worker_skill(id, worker_id, skill_id, value)
  109.     VALUES (tid, tworker_id, tskill_id, tvalue);
  110. END;
  111. $$ LANGUAGE plpgsql;
  112.  
  113. CREATE OR REPLACE PROCEDURE create_pool(
  114.     tid                          BIGINT         ,
  115.     tproject_id                  BIGINT         ,
  116.     tname                        VARCHAR(255)   ,
  117.     tprice                       NUMERIC(15, 2) ,
  118.     ttasks_count                 BIGINT
  119. ) AS $$
  120. BEGIN
  121.     INSERT INTO pool(id, project_id, name, price, tasks_count)
  122.     VALUES (tid, tproject_id, tname, tprice, ttasks_count);
  123. END;
  124. $$ LANGUAGE plpgsql;
  125.  
  126. CREATE OR REPLACE PROCEDURE add_pool_lang(tpool_id BIGINT, tlang VARCHAR(2))
  127. AS $$
  128. BEGIN
  129.     INSERT INTO pool_lang(pool_id, lang)
  130.     VALUES (tpool_id, tlang);
  131. END;
  132. $$ LANGUAGE plpgsql;
  133.  
  134. CREATE OR REPLACE PROCEDURE add_pool_skill(
  135.     tid        BIGINT   ,
  136.     tpool_id   BIGINT   ,
  137.     tskill_id  BIGINT   ,
  138.     tthreshold INT                
  139. ) AS $$
  140. BEGIN
  141.     INSERT INTO pool_skills(id, pool_id, skill_id, threshold)
  142.     VALUES (tid, tpool_id, tskill_id, tthreshold);
  143. END;
  144. $$ LANGUAGE plpgsql;
  145.  
  146.  
  147. -- GET POOLS FOR USER
  148.  
  149. SELECT *
  150. FROM pool
  151. WHERE
  152.     (SELECT count(*) FROM pool_lang WHERE pool_lang.pool_id = pool.id) =
  153.     (SELECT count(*)
  154.         FROM pool_lang
  155.         WHERE pool_lang.pool_id = pool.id
  156.         AND pool_lang.lang IN (SELECT lang FROM user_lang WHERE user_lang.user_id = '2'))
  157.     AND
  158.     (SELECT count(*) FROM pool_skills WHERE pool_skills.pool_id = pool.id) =
  159.     (SELECT count(*)
  160.         FROM pool_skills
  161.         WHERE pool_skills.pool_id = pool.id
  162.         AND (SELECT count(*) from worker_skill WHERE worker_skill.worker_id = '2'
  163.             AND worker_skill.skill_id = pool_skills.skill_id
  164.             AND worker_skill.value < pool_skills.threshold) = 0)
  165. ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement