Skip to content
Snippets Groups Projects
Commit 3fb097e4 authored by Anton Bagliy's avatar Anton Bagliy
Browse files

ADD: postgres db tables and functions for subgroups #199

parent d68f7f86
Branches
No related merge requests found
CREATE SEQUENCE seq_subgroups
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
-- DROP SEQUENCE public.seq_subgroups;
select setval('seq_subgroups', 1, true);
create table subgroups (
id integer default nextval('seq_subgroups'::regclass) NOT NULL,
title character varying(20) NOT NULL,
teacher_id integer NOT NULL,
discipline_id integer NOT NULL
);
ALTER TABLE ONLY subgroups
ADD CONSTRAINT subgroups_pkey PRIMARY KEY (id);
ALTER TABLE ONLY subgroups
ADD CONSTRAINT subgroups_ibfk_1 FOREIGN KEY (discipline_id) REFERENCES disciplines(id);
ALTER TABLE ONLY subgroups
ADD CONSTRAINT subgroups_ibfk_2 FOREIGN KEY (teacher_id) REFERENCES teachers(id);
CREATE SEQUENCE seq_students_subgroups
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
create table students_subgroups (
id integer default nextval('seq_students_subgroups'::regclass) NOT NULL,
recordbook_id integer NOT NULL,
subgroup_id integer NOT NULL
);
ALTER TABLE ONLY students_subgroups
ADD CONSTRAINT students_subgroups_pkey PRIMARY KEY (id);
ALTER TABLE ONLY students_subgroups
ADD CONSTRAINT students_subgroups_ibfk_1 FOREIGN KEY (recordbook_id) REFERENCES record_books(id);
ALTER TABLE ONLY students_subgroups
ADD CONSTRAINT students_subgroups_ibfk_2 FOREIGN KEY (subgroup_id) REFERENCES subgroups(id);
CREATE SEQUENCE seq_subgroups_teachers
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
create table subgroups_teachers (
id integer default nextval('seq_subgroups_teachers'::regclass) NOT NULL,
subgroup_id integer NOT NULL,
teacher_id integer NOT NULL
);
ALTER TABLE ONLY subgroups_teachers
ADD CONSTRAINT subgroups_teachers_pkey PRIMARY KEY (id);
ALTER TABLE ONLY subgroups_teachers
ADD CONSTRAINT subgroups_teachers_ibfk_1 FOREIGN KEY (subgroup_id) REFERENCES subgroups(id);
ALTER TABLE ONLY subgroups_teachers
ADD CONSTRAINT subgroups_teachers_ibfk_2 FOREIGN KEY (teacher_id) REFERENCES teachers(id);
CREATE OR REPLACE FUNCTION public.CreateSubgroup(ptitle character varying, pteacherid integer, pdisciplineid integer)
RETURNS integer
LANGUAGE plpgsql
AS $function$
declare vID int default -1;
begin
INSERT INTO subgroups (title, teacher_id, discipline_id)
VALUES (ptitle, pteacherid, pdisciplineid) returning id into vID;
RETURN vID;
end
$function$;
CREATE OR REPLACE FUNCTION public.subgroup_delete(psubgroupid integer)
RETURNS integer
LANGUAGE plpgsql
AS $function$
begin
delete from subgroups
where subgroups.id = psubgroupid;
RETURN 0;
end
$function$;
CREATE OR REPLACE FUNCTION public.Discipline_GetSubgroups(pdisciplineid integer)
RETURNS TABLE("ID" integer, "Title" character varying, "TeacherID" integer)
LANGUAGE sql
AS $function$
SELECT subgroups.id AS "ID",
subgroups.title AS "Title",
subgroups.teacher_id AS "TeacherID"
FROM subgroups
WHERE subgroups.discipline_id = pdisciplineid;
$function$;
CREATE OR REPLACE FUNCTION public.Subgroup_BindStudent(pstudentid integer, psubgroupid integer)
RETURNS integer
LANGUAGE plpgsql
AS $function$
declare vID int default -1;
begin
insert into students_subgroups(recordbook_id, subgroup_id)
values(pstudentid, psubgroupid) returning id into vID;
RETURN vID;
end
$function$;
CREATE OR REPLACE FUNCTION public.Subgroup_UnbindStudent(pstudentid integer, psubgroupid integer)
RETURNS integer
LANGUAGE plpgsql
AS $function$
declare vID int default -1;
begin
delete from students_subgroups
where students_subgroups.recordbook_id = pstudentid and students_subgroups.subgroup_id = psubgroupid;
RETURN 0;
end
$function$;
CREATE OR REPLACE FUNCTION public.Subgroup_GetStudents(psubgroupid integer)
RETURNS TABLE("ID" integer)
LANGUAGE sql
AS $function$
select students_subgroups.recordbook_id from students_subgroups
where students_subgroups.subgroup_id = psubgroupid;
$function$;
CREATE OR REPLACE FUNCTION public.Subgroup_BindTeacher(pteacherid integer, psubgroupid integer)
RETURNS integer
LANGUAGE plpgsql
AS $function$
declare vID int default -1;
begin
insert into subgroups_teachers(teacher_id, subgroup_id)
values(pteacherid, psubgroupid) returning id into vID;
RETURN vID;
end
$function$;
\ No newline at end of file
......@@ -4,7 +4,7 @@ class Model_Subgroup extends Model_Container
{
protected function getRawData($id) {
$sql = 'CALL `Subgroup_GetInfo`(:id)';
$sql = 'SELECT Subgroup_GetInfo(:id)';
$info = DB::query(Database::SELECT, $sql)
->param(':id', $id)->execute();
......@@ -24,7 +24,7 @@ class Model_Subgroup extends Model_Container
}
protected function create() {
$sql = 'SELECT `CreateSubgroup`(Title, TeacherID, DisciplineID) AS `ID`';
$sql = 'SELECT * FROM CreateSubgroup(Title, TeacherID, DisciplineID) AS "ID"';
$this->data[self::$ID_FIELD] = DB::query(Database::SELECT, $sql)
->parameters($this->data)
......@@ -32,7 +32,7 @@ class Model_Subgroup extends Model_Container
}
public static function get_students($id, $discipline) {
$sql = 'CALL `Subgroup_GetStudents`(:SubgroupID)';
$sql = 'SELECT * FROM Subgroup_GetStudents(:SubgroupID)';
$rows = DB::query(Database::SELECT, $sql)
->parameters([
':SubgroupID' => $id,
......@@ -57,7 +57,7 @@ class Model_Subgroup extends Model_Container
}
public static function attachStudent($studentId, $subgroupId) {
$sql = 'SELECT `Subgroup_BindStudent`(:pStudentID, :pSubgroupID) AS `res`';
$sql = 'SELECT * FROM Subgroup_BindStudent(:pStudentID, :pSubgroupID) AS "res"';
return DB::query(Database::SELECT, $sql)
->parameters([
':pStudentID' => $studentId,
......@@ -66,7 +66,7 @@ class Model_Subgroup extends Model_Container
}
public static function detachStudent($studentId, $subgroupId) {
$sql = 'SELECT `Subgroup_UnbindStudent`(:pStudentID, :pSubgroupID) AS `res`';
$sql = 'SELECT * FROM Subgroup_UnbindStudent(:pStudentID, :pSubgroupID) AS "res"';
return DB::query(Database::SELECT, $sql)
->parameters([
':pStudentID' => $studentId,
......@@ -75,7 +75,7 @@ class Model_Subgroup extends Model_Container
}
public static function attachTeacher($teacherId, $subgroupId) {
$sql = 'SELECT `Subgroup_BindTeacher`(:pTeacherID, :pSubgroupID) AS `res`';
$sql = 'SELECT * FROM Subgroup_BindTeacher(:pTeacherID, :pSubgroupID) AS "res"';
return DB::query(Database::SELECT, $sql)
->parameters([
':pTeacherID' => $teacherId,
......@@ -84,7 +84,7 @@ class Model_Subgroup extends Model_Container
}
public static function getSubgroupsForDiscipline($disciplineId) {
$sql = 'CALL `Discipline_GetSubgroups`(:DisciplineID)';
$sql = 'SELECT * FROM Discipline_GetSubgroups(:DisciplineID)';
return DB::query(Database::SELECT, $sql)
->parameters([
......@@ -93,12 +93,11 @@ class Model_Subgroup extends Model_Container
}
public static function deleteSubgroup($subgroupId) {
$sql = 'SELECT `Subgroup_Delete`(:pSubgroupID) AS `res`';
$sql = 'SELECT * FROM Subgroup_Delete(:pSubgroupID) AS "res"';
return DB::query(Database::SELECT, $sql)
->parameters([
':pSubgroupID' => $subgroupId
])->execute()->get('res');
}
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment