/
wax_boy
/
semaphore_custom
Обзор
Документация
Войти
/
wax_boy
/
semaphore_custom
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
db/sql/project.go
121 строка
3 KB
Denis Gukov
refactor(db): extract db connection class
15 июл 2025, 16:46
Не верифицирован
15 июл 2025, 16:46
bb6a325
Код
Авторство
О чём код?
package sql import ( "github.com/Masterminds/squirrel" "github.com/semaphoreui/semaphore/db" "github.com/semaphoreui/semaphore/pkg/tz" ) func (d *SqlDb) CreateProject(project db.Project) (newProject db.Project, err error) { project.Created = tz.Now() insertId, err := d.insert( "id", "insert into project(name, created, type, alert, alert_chat, max_parallel_tasks) values (?, ?, ?, ?, ?, ?)", project.Name, project.Created, project.Type, project.Alert, project.AlertChat, project.MaxParallelTasks) if err != nil { return } newProject = project newProject.ID = insertId return } func (d *SqlDb) GetAllProjects() (projects []db.Project, err error) { query, args, err := squirrel.Select("p.*"). From("project as p"). OrderBy("p.name"). Limit(200). ToSql() if err != nil { return } _, err = d.selectAll(&projects, query, args...) return } func (d *SqlDb) GetProjects(userID int) (projects []db.Project, err error) { query, args, err := squirrel.Select("p.*"). From("project as p"). Join("project__user as pu on pu.project_id=p.id"). Where("pu.user_id=?", userID). OrderBy("p.name"). Limit(200). ToSql() if err != nil { return } _, err = d.selectAll(&projects, query, args...) return } func (d *SqlDb) GetProject(projectID int) (project db.Project, err error) { query, args, err := squirrel.Select("p.*"). From("project as p"). Where("p.id=?", projectID). ToSql() if err != nil { return } err = d.selectOne(&project, query, args...) return } func (d *SqlDb) DeleteProject(projectID int) error { //tpls, err := d.GetTemplates(projectID, db.TemplateFilter{}, db.RetrieveQueryParams{}) // //if err != nil { // return err //} // TODO: sort projects tx, err := d.Sql().Begin() if err != nil { return err } statements := []string{ "update project__template set build_template_id = null where project_id=?", "delete from project__template where project_id=?", "delete from project__user where project_id=?", "delete from project__repository where project_id=?", "delete from project__inventory where project_id=?", "delete from access_key where project_id=?", "delete from project where id=?", } for _, statement := range statements { _, err = tx.Exec(d.PrepareQuery(statement), projectID) if err != nil { _ = tx.Rollback() return err } } return tx.Commit() } func (d *SqlDb) UpdateProject(project db.Project) error { _, err := d.exec( "update project set name=?, alert=?, alert_chat=?, max_parallel_tasks=? where id=?", project.Name, project.Alert, project.AlertChat, project.MaxParallelTasks, project.ID) return err }