refactor(backend/models): use pgtype for nullable fields

This commit is contained in:
Masahiko AMANO 2025-07-03 16:16:44 +03:00
parent 59eacd6bc5
commit 761babfa1a

View File

@ -1,71 +1,75 @@
package models package models
import "time" import (
"time"
type User struct {
Name string `json:"name"` "github.com/jackc/pgx/v5/pgtype"
IsAdmin bool `json:"is_admin"` )
}
type User struct {
type MIME struct { Name string `json:"name"`
Name string `json:"name"` IsAdmin bool `json:"is_admin"`
Extension string `json:"extension"` }
}
type MIME struct {
type Category struct { Name string `json:"name"`
ID string `json:"id"` Extension string `json:"extension"`
Name string `json:"name"` }
Color string `json:"color"`
CreatedAt time.Time `json:"created_at"` type Category struct {
Creator User `json:"creator"` ID string `json:"id"`
} Name string `json:"name"`
Color pgtype.Text `json:"color"`
type File struct { CreatedAt time.Time `json:"created_at"`
ID string `json:"id"` Creator User `json:"creator"`
Name string `json:"name"` }
MIME MIME `json:"mime"`
CreatedAt time.Time `json:"created_at"` type File struct {
Creator User `json:"creator"` ID string `json:"id"`
} Name pgtype.Text `json:"name"`
MIME MIME `json:"mime"`
type Tag struct { CreatedAt time.Time `json:"created_at"`
ID string `json:"id"` Creator User `json:"creator"`
Name string `json:"name"` }
Color string `json:"color"`
Category Category `json:"category"` type Tag struct {
CreatedAt time.Time `json:"created_at"` ID string `json:"id"`
Creator User `json:"creator"` Name string `json:"name"`
} Color pgtype.Text `json:"color"`
Category Category `json:"category"`
type Autotag struct { CreatedAt time.Time `json:"created_at"`
TriggerTag Tag `json:"trigger_tag"` Creator User `json:"creator"`
AddTag Tag `json:"add_tag"` }
IsActive bool `json:"is_active"`
} type Autotag struct {
TriggerTag Tag `json:"trigger_tag"`
type Pool struct { AddTag Tag `json:"add_tag"`
ID string `json:"id"` IsActive bool `json:"is_active"`
Name string `json:"name"` }
CreatedAt time.Time `json:"created_at"`
Creator User `json:"creator"` type Pool struct {
} ID string `json:"id"`
Name string `json:"name"`
type Session struct { CreatedAt time.Time `json:"created_at"`
ID int `json:"id"` Creator User `json:"creator"`
UserAgent string `json:"user_agent"` }
StartedAt time.Time `json:"started_at"`
ExpiresAt time.Time `json:"expires_at"` type Session struct {
LastActivity time.Time `json:"last_activity"` ID int `json:"id"`
} UserAgent string `json:"user_agent"`
StartedAt time.Time `json:"started_at"`
type Pagination struct { ExpiresAt time.Time `json:"expires_at"`
Total int `json:"total"` LastActivity time.Time `json:"last_activity"`
Offset int `json:"offset"` }
Limit int `json:"limit"`
Count int `json:"count"` type Pagination struct {
} Total int `json:"total"`
Offset int `json:"offset"`
type Slice[T any] struct { Limit int `json:"limit"`
Pagination Pagination `json:"pagination"` Count int `json:"count"`
Data []T `json:"data"` }
}
type Slice[T any] struct {
Pagination Pagination `json:"pagination"`
Data []T `json:"data"`
}