Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
G
grade
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Model registry
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Anton Yushko
grade
Commits
3fb097e4
Commit
3fb097e4
authored
6 years ago
by
Anton Bagliy
Browse files
Options
Downloads
Patches
Plain Diff
ADD: postgres db tables and functions for subgroups #199
parent
d68f7f86
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
db/postgresql/add_subgroups_01_12_18.sql
+152
-0
152 additions, 0 deletions
db/postgresql/add_subgroups_01_12_18.sql
~dev_rating/application/classes/Model/Subgroup.php
+8
-9
8 additions, 9 deletions
~dev_rating/application/classes/Model/Subgroup.php
with
160 additions
and
9 deletions
db/postgresql/add_subgroups_01_12_18.sql
0 → 100644
+
152
−
0
View file @
3fb097e4
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
This diff is collapsed.
Click to expand it.
~dev_rating/application/classes/Model/Subgroup.php
+
8
−
9
View file @
3fb097e4
...
...
@@ -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'
);
}
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment