1
0
mirror of https://github.com/MADTeacher/go_basics.git synced 2025-11-23 21:34:47 +02:00
Files
go_basics/part_10/10.4/golang/todo-service/db/projects_crud.go
Stanislav Chernyshev ae0f585f49 init
2025-03-25 21:11:56 +03:00

50 lines
922 B
Go

package db
import (
"errors"
"github.com/mattn/go-sqlite3"
)
func (r *SQLiteRepository) AddProject(project Project) (*Project, error) {
tx := r.db.Create(&project)
if tx.Error != nil {
var sqliteErr sqlite3.Error
if errors.As(tx.Error, &sqliteErr) {
if errors.Is(sqliteErr.ExtendedCode, sqlite3.ErrConstraintUnique) {
return nil, ErrDuplicate
}
}
return nil, tx.Error
}
return &project, nil
}
func (r *SQLiteRepository) DeleteProject(projectID int) error {
tx := r.db.Delete(&Project{ID: projectID})
if tx.Error != nil {
return tx.Error
}
rowsAffected := tx.RowsAffected
if rowsAffected == 0 {
return ErrDeleteFailed
}
return nil
}
func (r *SQLiteRepository) GetAllProjects() ([]Project, error) {
var projects []Project
tx := r.db.Find(&projects)
if tx.Error != nil {
return nil, tx.Error
}
if tx.RowsAffected == 0 {
return nil, ErrNotExists
}
return projects, nil
}