server: implement local file management
This commit is contained in:
@@ -13,6 +13,7 @@ import (
|
||||
var ErrUserNotFound = errors.New("db: user not found")
|
||||
var ErrSessionNotFound = errors.New("db: session not found")
|
||||
var ErrChannelNotFound = errors.New("db: channel not found")
|
||||
var ErrFileNotFound = errors.New("db: file not found")
|
||||
|
||||
func dbGetUser(id string) (*User, error) {
|
||||
query := `SELECT id, name, password FROM users WHERE id = $1`
|
||||
@@ -206,3 +207,29 @@ func dbDeleteChannel(id string) error {
|
||||
slog.Debug("db: channel deleted")
|
||||
return nil
|
||||
}
|
||||
|
||||
func dbAddFile(file *File) error {
|
||||
query := `INSERT INTO files (id, name, created, backend, path) VALUES ($1, $2, $3, $4, $5)`
|
||||
_, err := db.Pool.Exec(context.Background(), query, file.ID, file.Name, file.Created, file.Backend, file.Path)
|
||||
if err != nil {
|
||||
slog.Error("db: failed to add file", "error", err, "fileid", file.ID)
|
||||
return fmt.Errorf("failed to add file")
|
||||
}
|
||||
slog.Debug("db: file added", "fileid", file.ID, "filename", file.Name)
|
||||
return nil
|
||||
}
|
||||
|
||||
func dbGetFile(id string) (*File, error) {
|
||||
query := `SELECT id, name, created, backend, path FROM files WHERE id = $1`
|
||||
var file File
|
||||
err := db.Pool.QueryRow(context.Background(), query, id).Scan(&file.ID, &file.Name, &file.Created, &file.Backend, &file.Path)
|
||||
if errors.Is(err, pgx.ErrNoRows) {
|
||||
slog.Debug("db: file not found", "fileid", id)
|
||||
return nil, ErrFileNotFound
|
||||
} else if err != nil {
|
||||
slog.Error("db: failed to query file", "error", err)
|
||||
return nil, fmt.Errorf("failed to query file")
|
||||
}
|
||||
slog.Debug("db: file found", "fileid", file.ID, "filename", file.Name)
|
||||
return &file, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user