36 lines
815 B
Go
36 lines
815 B
Go
package models
|
|
|
|
import (
|
|
"database/sql"
|
|
)
|
|
|
|
type File struct {
|
|
ID int
|
|
OriginalName string
|
|
Hash string
|
|
HashAlgorithm string
|
|
}
|
|
|
|
func GetFileByID(db *sql.DB, id int64) (*File, error) {
|
|
query := "SELECT id, original_name, hash, hash_algorithm FROM files WHERE id = ?"
|
|
row := db.QueryRow(query, id)
|
|
file := &File{}
|
|
err := row.Scan(&file.ID, &file.OriginalName, &file.Hash, &file.HashAlgorithm)
|
|
if err == sql.ErrNoRows {
|
|
return nil, nil
|
|
}
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return file, nil
|
|
}
|
|
|
|
func CreateFile(db *sql.DB, file File) (int64, error) {
|
|
query := "INSERT INTO files (original_name, hash, hash_algorithm) VALUES (?, ?, ?)"
|
|
result, err := db.Exec(query, file.OriginalName, file.Hash, file.HashAlgorithm)
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
return result.LastInsertId()
|
|
}
|