Nouveau script générant le cgitrc. Avec des jolies fonctions sql.
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
CREATE OR REPLACE FUNCTION git."AccessType" (
|
||||
gituserid integer,
|
||||
gitrepo character varying
|
||||
)
|
||||
RETURNS git.gitrepoaccesstype
|
||||
LANGUAGE plpgsql
|
||||
AS $code$
|
||||
DECLARE
|
||||
selectedrepo git.gitrepoaccesstype;
|
||||
BEGIN
|
||||
|
||||
/* user.repo */
|
||||
SELECT MAX("accessType")
|
||||
INTO selectedrepo
|
||||
FROM git.perms
|
||||
JOIN git.repos ON "repoID"=repos."ID"
|
||||
WHERE repos.path=gitrepo AND "userID"=gituserid;
|
||||
|
||||
RETURN selectedrepo;
|
||||
|
||||
IF selectedrepo != NULL
|
||||
THEN RETURN selectedrepo;
|
||||
END IF;
|
||||
|
||||
/* groupe.repo */
|
||||
SELECT MAX('accessType')
|
||||
INTO selectedrepo
|
||||
FROM git.perms
|
||||
JOIN git.repos ON repoID=repos."ID"
|
||||
JOIN git.appartenances ON appartenances."groupeID"=-perms."userID"
|
||||
WHERE repos.path=gitrepo AND appartenances.utilisateurID=gituserid;
|
||||
|
||||
IF selectedrepo != NULL
|
||||
THEN RETURN selectedrepo;
|
||||
END IF;
|
||||
|
||||
/* user.repoGroup */
|
||||
SELECT MAX('accessType')
|
||||
INTO selectedrepo
|
||||
FROM git.perms
|
||||
JOIN git.repos ON repoID=-repos."groupeID"
|
||||
WHERE repos.path=gitrepo AND userID=gituserid;
|
||||
|
||||
IF selectedrepo != NULL
|
||||
THEN RETURN selectedrepo;
|
||||
END IF;
|
||||
|
||||
/* groupe.repoGroupe */
|
||||
SELECT MAX('accessType')
|
||||
INTO selectedrepo
|
||||
FROM git.perms
|
||||
JOIN git.appartenances ON appartenances."groupeID"=-perms."userID"
|
||||
JOIN git.repos ON "repoID"=-repos."groupeID"
|
||||
WHERE repos.path=gitrepo AND userID=gituserid;
|
||||
|
||||
RETURN selectedRepo;
|
||||
|
||||
END
|
||||
$code$
|
||||
@@ -0,0 +1,43 @@
|
||||
CREATE OR REPLACE FUNCTION git."ReadableRepos" (
|
||||
gituserid integer
|
||||
)
|
||||
RETURNS table(
|
||||
ID integer,
|
||||
path character varying(255),
|
||||
name character varying(255),
|
||||
owner character varying(255),
|
||||
description character varying,
|
||||
groupeID integer,
|
||||
logoUrl character varying(255)
|
||||
)
|
||||
LANGUAGE plpgsql
|
||||
AS $code$
|
||||
BEGIN
|
||||
RETURN QUERY
|
||||
/* user.repo */
|
||||
SELECT repos.*
|
||||
FROM git.perms
|
||||
JOIN git.repos ON "repoID"=repos."ID"
|
||||
WHERE "accessType">'READ' AND "userID"=gituserid
|
||||
UNION
|
||||
/* groupe.repo */
|
||||
SELECT repos.*
|
||||
FROM git.perms
|
||||
JOIN git.repos ON "repoID"=repos."ID"
|
||||
JOIN git.appartenances ON appartenances."groupeID"=-perms."userID"
|
||||
WHERE "accessType">'READ' AND appartenances."utilisateurID"=gituserid
|
||||
UNION
|
||||
/* user.repoGroup */
|
||||
SELECT repos.*
|
||||
FROM git.perms
|
||||
JOIN git.repos ON "repoID"=-repos."groupeID"
|
||||
WHERE "accessType">'READ' AND "userID"=gituserid
|
||||
UNION
|
||||
/* groupe.repoGroupe */
|
||||
SELECT repos.*
|
||||
FROM git.perms
|
||||
JOIN git.appartenances ON appartenances."groupeID"=-perms."userID"
|
||||
JOIN git.repos ON "repoID"=-repos."groupeID"
|
||||
WHERE "accessType">'READ' AND "userID"=gituserid;
|
||||
END
|
||||
$code$
|
||||
Reference in New Issue
Block a user