first commit
This commit is contained in:
@@ -1,74 +1,47 @@
|
||||
package turso
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"io"
|
||||
"log"
|
||||
"time"
|
||||
|
||||
"github.com/jmoiron/sqlx"
|
||||
"trankilou.fr/lassistanoque/backend/internal/adapter/database/dberrors"
|
||||
"gitea.trankilou.fr/fabien/lasebuche"
|
||||
"trankilou.fr/lassistanoque/backend/internal/domain"
|
||||
"trankilou.fr/lassistanoque/backend/internal/utility"
|
||||
)
|
||||
|
||||
type TursoFileRepository struct {
|
||||
DB *sqlx.DB
|
||||
db *sql.DB
|
||||
FileTable lasebuche.Table[domain.File]
|
||||
}
|
||||
|
||||
func NewTursoFileRepository(db *sql.DB) *TursoFileRepository {
|
||||
dialect := lasebuche.NewSqliteDialect()
|
||||
fileTable, err := lasebuche.NewTable[domain.File](db, dialect, "settings")
|
||||
if err != nil {
|
||||
log.Fatalf("error creating lasebuche team table")
|
||||
}
|
||||
return &TursoFileRepository{
|
||||
db: db,
|
||||
FileTable: fileTable,
|
||||
}
|
||||
}
|
||||
|
||||
func (fr *TursoFileRepository) FindByID(id string) (*domain.File, error) {
|
||||
var file domain.File
|
||||
err := fr.DB.Get(&file, "select id, name, content_type, storage_path, storage_filename, date_created, date_updated, _version from files where id=$1", id)
|
||||
return &file, err
|
||||
return fr.FileTable.Get(id)
|
||||
}
|
||||
|
||||
func (fr *TursoFileRepository) Create(file *domain.File) (*domain.File, error) {
|
||||
file.ID = utility.GenID()
|
||||
file.VersionId = utility.GenID()
|
||||
file.DateCreated = time.Now()
|
||||
file.DateUpdated = time.Now()
|
||||
_, err := fr.DB.NamedExec(
|
||||
`insert into files (id, name, content_type, storage_path, storage_filename, date_created, date_updated, _version)
|
||||
values (:id, :name, :content_type, :storage_path, :storage_filename, :date_created, :date_updated, :_version)`,
|
||||
file)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return file, nil
|
||||
return fr.FileTable.Insert(file)
|
||||
}
|
||||
|
||||
func (fr *TursoFileRepository) Update(file *domain.File) (*domain.File, error) {
|
||||
newVersion := utility.GenID()
|
||||
file.DateUpdated = time.Now()
|
||||
res, err := fr.DB.Exec(
|
||||
`update files
|
||||
set name=$1,
|
||||
content_type=$2,
|
||||
storage_path=$3,
|
||||
storage_filename=$4,
|
||||
date_updated=$5,
|
||||
_version=$6
|
||||
where id=$7 and _version=$8`,
|
||||
file.Name, file.ContentType, file.StoragePath, file.StorageFilename, file.DateUpdated,
|
||||
newVersion, file.ID, file.VersionId,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if count, _ := res.RowsAffected(); count == 0 {
|
||||
return nil, dberrors.ErrNoRowUpdated
|
||||
}
|
||||
|
||||
file.VersionId = newVersion
|
||||
|
||||
return file, nil
|
||||
return fr.FileTable.Update(file)
|
||||
}
|
||||
|
||||
func (fr *TursoFileRepository) Delete(id string) error {
|
||||
res, err := fr.DB.Exec("delete from files where id=$1", id)
|
||||
if count, _ := res.RowsAffected(); count == 0 {
|
||||
return dberrors.ErrNoRowUpdated
|
||||
}
|
||||
return err
|
||||
return fr.FileTable.Delete(id)
|
||||
}
|
||||
|
||||
func (fr *TursoFileRepository) Upload(reader io.Reader, path string, name string, contentType string, replace bool) (*domain.File, error) {
|
||||
@@ -90,18 +63,9 @@ func (fr *TursoFileRepository) Upload(reader io.Reader, path string, name string
|
||||
Content: bytes,
|
||||
}
|
||||
|
||||
_, err = fr.DB.NamedExec(
|
||||
`insert into files (id, name, content_type, storage_path, storage_filename, date_created, date_updated, _version, content)
|
||||
values (:id, :name, :content_type, :storage_path, :storage_filename, :date_created, :date_updated, :_version, :content)`,
|
||||
file)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return file, nil
|
||||
return fr.FileTable.Insert(file)
|
||||
}
|
||||
|
||||
func (fr *TursoFileRepository) Download(id string) (*domain.File, error) {
|
||||
var file domain.File
|
||||
err := fr.DB.Get(&file, "select * from files where id=$1", id)
|
||||
return &file, err
|
||||
return fr.FileTable.Get(id)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user