package database import ( "database/sql" "encoding/hex" "foobar/model" "time" "github.com/google/uuid" ) func InsertFile(tx *sql.Tx, boxId uuid.UUID, file model.File) error { row, err := tx.Exec( `INSERT INTO file (id, id_box, name, created_at, size, mime, md5) VALUES ($1, $2, $3, $4, $5, $6, $7);`, file.ID(), boxId, file.Name(), file.CreatedAt(), file.Size(), file.Mime(), file.Checksum(), ) if err != nil { return err } affected, err := row.RowsAffected() if err != nil { return err } if affected != 1 { return errNoRowsAffected } return nil } func SelectBoxFiles(boxID uuid.UUID) (f []model.File, e error) { // TODO: teste row, err := instance.Query( `SELECT id, name, size, created_at, mime, md5 FROM file WHERE id_box = $1 ORDER BY created_at DESC`, boxID, ) if err != nil { return nil, err } for row.Next() { var ( id uuid.UUID name model.Filename size int64 createdAt time.Time mime model.FileMime encodedMd5 string ) err = row.Scan(&id, &name, &size, &createdAt, &mime, &encodedMd5) if err != nil { return nil, err } decodedMD5, err := hex.DecodeString(encodedMd5) if err != nil { return nil, err } f = append(f, model.NewFile(id, name, size, createdAt, mime, model.MD5Checksum(decodedMD5))) } return f, nil }