4277b7b2a8
personal projects are projects that have no team. they can only seen by the project members (one of which is whoever first creates the project).
451 lines
12 KiB
Go
451 lines
12 KiB
Go
// Code generated by sqlc. DO NOT EDIT.
|
|
// source: project.sql
|
|
|
|
package db
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
const createPersonalProject = `-- name: CreatePersonalProject :one
|
|
INSERT INTO project(team_id, created_at, name) VALUES (null, $1, $2) RETURNING project_id, team_id, created_at, name
|
|
`
|
|
|
|
type CreatePersonalProjectParams struct {
|
|
CreatedAt time.Time `json:"created_at"`
|
|
Name string `json:"name"`
|
|
}
|
|
|
|
func (q *Queries) CreatePersonalProject(ctx context.Context, arg CreatePersonalProjectParams) (Project, error) {
|
|
row := q.db.QueryRowContext(ctx, createPersonalProject, arg.CreatedAt, arg.Name)
|
|
var i Project
|
|
err := row.Scan(
|
|
&i.ProjectID,
|
|
&i.TeamID,
|
|
&i.CreatedAt,
|
|
&i.Name,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const createPersonalProjectLink = `-- name: CreatePersonalProjectLink :one
|
|
INSERT INTO personal_project (project_id, user_id) VALUES ($1, $2) RETURNING personal_project_id, project_id, user_id
|
|
`
|
|
|
|
type CreatePersonalProjectLinkParams struct {
|
|
ProjectID uuid.UUID `json:"project_id"`
|
|
UserID uuid.UUID `json:"user_id"`
|
|
}
|
|
|
|
func (q *Queries) CreatePersonalProjectLink(ctx context.Context, arg CreatePersonalProjectLinkParams) (PersonalProject, error) {
|
|
row := q.db.QueryRowContext(ctx, createPersonalProjectLink, arg.ProjectID, arg.UserID)
|
|
var i PersonalProject
|
|
err := row.Scan(&i.PersonalProjectID, &i.ProjectID, &i.UserID)
|
|
return i, err
|
|
}
|
|
|
|
const createProjectMember = `-- name: CreateProjectMember :one
|
|
INSERT INTO project_member (project_id, user_id, role_code, added_at) VALUES ($1, $2, $3, $4)
|
|
RETURNING project_member_id, project_id, user_id, added_at, role_code
|
|
`
|
|
|
|
type CreateProjectMemberParams struct {
|
|
ProjectID uuid.UUID `json:"project_id"`
|
|
UserID uuid.UUID `json:"user_id"`
|
|
RoleCode string `json:"role_code"`
|
|
AddedAt time.Time `json:"added_at"`
|
|
}
|
|
|
|
func (q *Queries) CreateProjectMember(ctx context.Context, arg CreateProjectMemberParams) (ProjectMember, error) {
|
|
row := q.db.QueryRowContext(ctx, createProjectMember,
|
|
arg.ProjectID,
|
|
arg.UserID,
|
|
arg.RoleCode,
|
|
arg.AddedAt,
|
|
)
|
|
var i ProjectMember
|
|
err := row.Scan(
|
|
&i.ProjectMemberID,
|
|
&i.ProjectID,
|
|
&i.UserID,
|
|
&i.AddedAt,
|
|
&i.RoleCode,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const createTeamProject = `-- name: CreateTeamProject :one
|
|
INSERT INTO project(team_id, created_at, name) VALUES ($1, $2, $3) RETURNING project_id, team_id, created_at, name
|
|
`
|
|
|
|
type CreateTeamProjectParams struct {
|
|
TeamID uuid.UUID `json:"team_id"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
Name string `json:"name"`
|
|
}
|
|
|
|
func (q *Queries) CreateTeamProject(ctx context.Context, arg CreateTeamProjectParams) (Project, error) {
|
|
row := q.db.QueryRowContext(ctx, createTeamProject, arg.TeamID, arg.CreatedAt, arg.Name)
|
|
var i Project
|
|
err := row.Scan(
|
|
&i.ProjectID,
|
|
&i.TeamID,
|
|
&i.CreatedAt,
|
|
&i.Name,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const deleteProjectByID = `-- name: DeleteProjectByID :exec
|
|
DELETE FROM project WHERE project_id = $1
|
|
`
|
|
|
|
func (q *Queries) DeleteProjectByID(ctx context.Context, projectID uuid.UUID) error {
|
|
_, err := q.db.ExecContext(ctx, deleteProjectByID, projectID)
|
|
return err
|
|
}
|
|
|
|
const deleteProjectMember = `-- name: DeleteProjectMember :exec
|
|
DELETE FROM project_member WHERE user_id = $1 AND project_id = $2
|
|
`
|
|
|
|
type DeleteProjectMemberParams struct {
|
|
UserID uuid.UUID `json:"user_id"`
|
|
ProjectID uuid.UUID `json:"project_id"`
|
|
}
|
|
|
|
func (q *Queries) DeleteProjectMember(ctx context.Context, arg DeleteProjectMemberParams) error {
|
|
_, err := q.db.ExecContext(ctx, deleteProjectMember, arg.UserID, arg.ProjectID)
|
|
return err
|
|
}
|
|
|
|
const getAllProjects = `-- name: GetAllProjects :many
|
|
SELECT project_id, team_id, created_at, name FROM project
|
|
`
|
|
|
|
func (q *Queries) GetAllProjects(ctx context.Context) ([]Project, error) {
|
|
rows, err := q.db.QueryContext(ctx, getAllProjects)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []Project
|
|
for rows.Next() {
|
|
var i Project
|
|
if err := rows.Scan(
|
|
&i.ProjectID,
|
|
&i.TeamID,
|
|
&i.CreatedAt,
|
|
&i.Name,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Close(); err != nil {
|
|
return nil, err
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const getAllProjectsForTeam = `-- name: GetAllProjectsForTeam :many
|
|
SELECT project_id, team_id, created_at, name FROM project WHERE team_id = $1
|
|
`
|
|
|
|
func (q *Queries) GetAllProjectsForTeam(ctx context.Context, teamID uuid.UUID) ([]Project, error) {
|
|
rows, err := q.db.QueryContext(ctx, getAllProjectsForTeam, teamID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []Project
|
|
for rows.Next() {
|
|
var i Project
|
|
if err := rows.Scan(
|
|
&i.ProjectID,
|
|
&i.TeamID,
|
|
&i.CreatedAt,
|
|
&i.Name,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Close(); err != nil {
|
|
return nil, err
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const getAllVisibleProjectsForUserID = `-- name: GetAllVisibleProjectsForUserID :many
|
|
SELECT project.project_id, project.team_id, project.created_at, project.name FROM project LEFT JOIN
|
|
project_member ON project_member.project_id = project.project_id WHERE project_member.user_id = $1
|
|
`
|
|
|
|
func (q *Queries) GetAllVisibleProjectsForUserID(ctx context.Context, userID uuid.UUID) ([]Project, error) {
|
|
rows, err := q.db.QueryContext(ctx, getAllVisibleProjectsForUserID, userID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []Project
|
|
for rows.Next() {
|
|
var i Project
|
|
if err := rows.Scan(
|
|
&i.ProjectID,
|
|
&i.TeamID,
|
|
&i.CreatedAt,
|
|
&i.Name,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Close(); err != nil {
|
|
return nil, err
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const getMemberProjectIDsForUserID = `-- name: GetMemberProjectIDsForUserID :many
|
|
SELECT project_id FROM project_member WHERE user_id = $1
|
|
`
|
|
|
|
func (q *Queries) GetMemberProjectIDsForUserID(ctx context.Context, userID uuid.UUID) ([]uuid.UUID, error) {
|
|
rows, err := q.db.QueryContext(ctx, getMemberProjectIDsForUserID, userID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []uuid.UUID
|
|
for rows.Next() {
|
|
var project_id uuid.UUID
|
|
if err := rows.Scan(&project_id); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, project_id)
|
|
}
|
|
if err := rows.Close(); err != nil {
|
|
return nil, err
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const getPersonalProjectsForUserID = `-- name: GetPersonalProjectsForUserID :many
|
|
SELECT project.project_id, project.team_id, project.created_at, project.name FROM project
|
|
LEFT JOIN personal_project ON personal_project.project_id = project.project_id
|
|
WHERE personal_project.user_id = $1
|
|
`
|
|
|
|
func (q *Queries) GetPersonalProjectsForUserID(ctx context.Context, userID uuid.UUID) ([]Project, error) {
|
|
rows, err := q.db.QueryContext(ctx, getPersonalProjectsForUserID, userID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []Project
|
|
for rows.Next() {
|
|
var i Project
|
|
if err := rows.Scan(
|
|
&i.ProjectID,
|
|
&i.TeamID,
|
|
&i.CreatedAt,
|
|
&i.Name,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Close(); err != nil {
|
|
return nil, err
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const getProjectByID = `-- name: GetProjectByID :one
|
|
SELECT project_id, team_id, created_at, name FROM project WHERE project_id = $1
|
|
`
|
|
|
|
func (q *Queries) GetProjectByID(ctx context.Context, projectID uuid.UUID) (Project, error) {
|
|
row := q.db.QueryRowContext(ctx, getProjectByID, projectID)
|
|
var i Project
|
|
err := row.Scan(
|
|
&i.ProjectID,
|
|
&i.TeamID,
|
|
&i.CreatedAt,
|
|
&i.Name,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const getProjectMembersForProjectID = `-- name: GetProjectMembersForProjectID :many
|
|
SELECT project_member_id, project_id, user_id, added_at, role_code FROM project_member WHERE project_id = $1
|
|
`
|
|
|
|
func (q *Queries) GetProjectMembersForProjectID(ctx context.Context, projectID uuid.UUID) ([]ProjectMember, error) {
|
|
rows, err := q.db.QueryContext(ctx, getProjectMembersForProjectID, projectID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []ProjectMember
|
|
for rows.Next() {
|
|
var i ProjectMember
|
|
if err := rows.Scan(
|
|
&i.ProjectMemberID,
|
|
&i.ProjectID,
|
|
&i.UserID,
|
|
&i.AddedAt,
|
|
&i.RoleCode,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Close(); err != nil {
|
|
return nil, err
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const getProjectRolesForUserID = `-- name: GetProjectRolesForUserID :many
|
|
SELECT project_id, role_code FROM project_member WHERE user_id = $1
|
|
`
|
|
|
|
type GetProjectRolesForUserIDRow struct {
|
|
ProjectID uuid.UUID `json:"project_id"`
|
|
RoleCode string `json:"role_code"`
|
|
}
|
|
|
|
func (q *Queries) GetProjectRolesForUserID(ctx context.Context, userID uuid.UUID) ([]GetProjectRolesForUserIDRow, error) {
|
|
rows, err := q.db.QueryContext(ctx, getProjectRolesForUserID, userID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []GetProjectRolesForUserIDRow
|
|
for rows.Next() {
|
|
var i GetProjectRolesForUserIDRow
|
|
if err := rows.Scan(&i.ProjectID, &i.RoleCode); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Close(); err != nil {
|
|
return nil, err
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const getRoleForProjectMemberByUserID = `-- name: GetRoleForProjectMemberByUserID :one
|
|
SELECT code, role.name FROM project_member INNER JOIN role ON role.code = project_member.role_code
|
|
WHERE user_id = $1 AND project_id = $2
|
|
`
|
|
|
|
type GetRoleForProjectMemberByUserIDParams struct {
|
|
UserID uuid.UUID `json:"user_id"`
|
|
ProjectID uuid.UUID `json:"project_id"`
|
|
}
|
|
|
|
func (q *Queries) GetRoleForProjectMemberByUserID(ctx context.Context, arg GetRoleForProjectMemberByUserIDParams) (Role, error) {
|
|
row := q.db.QueryRowContext(ctx, getRoleForProjectMemberByUserID, arg.UserID, arg.ProjectID)
|
|
var i Role
|
|
err := row.Scan(&i.Code, &i.Name)
|
|
return i, err
|
|
}
|
|
|
|
const getUserRolesForProject = `-- name: GetUserRolesForProject :one
|
|
SELECT p.team_id, COALESCE(tm.role_code, '') AS team_role, COALESCE(pm.role_code, '') AS project_role
|
|
FROM project AS p
|
|
LEFT JOIN project_member AS pm ON pm.project_id = p.project_id AND pm.user_id = $1
|
|
LEFT JOIN team_member AS tm ON tm.team_id = p.team_id AND tm.user_id = $1
|
|
WHERE p.project_id = $2
|
|
`
|
|
|
|
type GetUserRolesForProjectParams struct {
|
|
UserID uuid.UUID `json:"user_id"`
|
|
ProjectID uuid.UUID `json:"project_id"`
|
|
}
|
|
|
|
type GetUserRolesForProjectRow struct {
|
|
TeamID uuid.UUID `json:"team_id"`
|
|
TeamRole string `json:"team_role"`
|
|
ProjectRole string `json:"project_role"`
|
|
}
|
|
|
|
func (q *Queries) GetUserRolesForProject(ctx context.Context, arg GetUserRolesForProjectParams) (GetUserRolesForProjectRow, error) {
|
|
row := q.db.QueryRowContext(ctx, getUserRolesForProject, arg.UserID, arg.ProjectID)
|
|
var i GetUserRolesForProjectRow
|
|
err := row.Scan(&i.TeamID, &i.TeamRole, &i.ProjectRole)
|
|
return i, err
|
|
}
|
|
|
|
const updateProjectMemberRole = `-- name: UpdateProjectMemberRole :one
|
|
UPDATE project_member SET role_code = $3 WHERE project_id = $1 AND user_id = $2
|
|
RETURNING project_member_id, project_id, user_id, added_at, role_code
|
|
`
|
|
|
|
type UpdateProjectMemberRoleParams struct {
|
|
ProjectID uuid.UUID `json:"project_id"`
|
|
UserID uuid.UUID `json:"user_id"`
|
|
RoleCode string `json:"role_code"`
|
|
}
|
|
|
|
func (q *Queries) UpdateProjectMemberRole(ctx context.Context, arg UpdateProjectMemberRoleParams) (ProjectMember, error) {
|
|
row := q.db.QueryRowContext(ctx, updateProjectMemberRole, arg.ProjectID, arg.UserID, arg.RoleCode)
|
|
var i ProjectMember
|
|
err := row.Scan(
|
|
&i.ProjectMemberID,
|
|
&i.ProjectID,
|
|
&i.UserID,
|
|
&i.AddedAt,
|
|
&i.RoleCode,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const updateProjectNameByID = `-- name: UpdateProjectNameByID :one
|
|
UPDATE project SET name = $2 WHERE project_id = $1 RETURNING project_id, team_id, created_at, name
|
|
`
|
|
|
|
type UpdateProjectNameByIDParams struct {
|
|
ProjectID uuid.UUID `json:"project_id"`
|
|
Name string `json:"name"`
|
|
}
|
|
|
|
func (q *Queries) UpdateProjectNameByID(ctx context.Context, arg UpdateProjectNameByIDParams) (Project, error) {
|
|
row := q.db.QueryRowContext(ctx, updateProjectNameByID, arg.ProjectID, arg.Name)
|
|
var i Project
|
|
err := row.Scan(
|
|
&i.ProjectID,
|
|
&i.TeamID,
|
|
&i.CreatedAt,
|
|
&i.Name,
|
|
)
|
|
return i, err
|
|
}
|