first commit

This commit is contained in:
2026-08-08 23:12:37 +02:00
parent ff6ef46cd4
commit e3fd942c47
20 changed files with 494 additions and 271 deletions
@@ -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)
}