generated from tsivinsky/go-template
allow to upload images
but also files, hmmmm
This commit is contained in:
63
model/image.go
Normal file
63
model/image.go
Normal file
@@ -0,0 +1,63 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
type Image struct {
|
||||
// uuid
|
||||
ID string `json:"id" db:"id"`
|
||||
Data []byte `json:"-" db:"data"`
|
||||
ContentType string `json:"contentType" db:"content_type"`
|
||||
UserID int64 `json:"userId" db:"user_id"`
|
||||
CreatedAt time.Time `json:"createdAt" db:"created_at"`
|
||||
UpdatedAt time.Time `json:"updatedAt" db:"updated_at"`
|
||||
}
|
||||
|
||||
func (img *Image) Create(db *sqlx.DB) error {
|
||||
if img.ID == "" {
|
||||
uid, err := uuid.NewV7()
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to generate uuid: %v", err)
|
||||
}
|
||||
img.ID = uid.String()
|
||||
}
|
||||
|
||||
_, err := db.NamedExec("INSERT INTO images (id, data, user_id, content_type) VALUES (:id, :data, :user_id, :content_type)", map[string]any{
|
||||
"id": img.ID,
|
||||
"data": img.Data,
|
||||
"user_id": img.UserID,
|
||||
"content_type": img.ContentType,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (img *Image) FindByID(db *sqlx.DB) error {
|
||||
row := db.QueryRowx("SELECT * FROM images WHERE id = ?", img.ID)
|
||||
if row.Err() != nil {
|
||||
return row.Err()
|
||||
}
|
||||
|
||||
if err := row.StructScan(img); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (img *Image) DeleteByID(db *sqlx.DB) error {
|
||||
_, err := db.Exec("DELETE FROM images WHERE id = ?", img.ID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user