Files
repo-pattern/app/main.go
2024-06-24 00:45:54 +02:00

132 lines
2.9 KiB
Go

package main
import (
"fmt"
"repo-pattern/app/lib/cfg"
"repo-pattern/app/lib/db"
"repo-pattern/app/lib/logging"
"repo-pattern/app/models"
"repo-pattern/app/repository"
"repo-pattern/app/repository/smartfilter"
"time"
"gorm.io/gorm"
)
var (
TRUE = true
FALSE = false
)
type CertFilter struct {
Alive *bool `filterfield:"field=alive,operator=EQ"`
SerialNumber *string `filterfield:"field=serial_number,operator=NE"`
SerialNumberContains *string `filterfield:"field=serial_number,operator=LIKE"`
IssuerContains *string `filterfield:"field=issuer,operator=ILIKE"`
Id *string `filterfield:"field=id,operator=EQ"`
Ids *[]string `filterfield:"field=id,operator=IN"`
IdsNot *[]string `filterfield:"field=id,operator=NOT_IN"`
CreatedAt_Lt *time.Time `filterfield:"field=created_at,operator=LT"`
}
func doMagic(db *gorm.DB) {
var err error
query := db
// id := "6dc096ab-5c03-427e-b808-c669f7446131"
// serialNumber := "222"
// serialNumberContains := "323"
// issuer := "FINA"
// location, _ := time.LoadLocation("UTC")
// createdTime := time.Date(2024, 5, 26, 16, 8, 0, 0, location)
ids := []string{"eb2bcac6-5173-4dbb-93b7-e7c03b924a03", "db9fb837-3483-4736-819d-f427dc8cda23", "1fece5e7-8e8d-4828-8298-3b1f07fd29ff"}
filter := CertFilter{
// Alive: &FALSE,
// Id: &id,
// SerialNumber: &serialNumber,
// SerialNumberContains: &serialNumberContains,
Ids: &ids,
// IssuerContains: &issuer,
// CreatedAt_Lt: &createdTime,
}
query, err = smartfilter.ToQuery(models.Cert{}, filter, query)
if err != nil {
panic(err)
}
var certs []models.Cert
query.Order("created_at").Find(&certs)
for n, cert := range certs {
fmt.Printf(">> [%d] %+v %s\n", n, cert.Id, cert.CreatedAt)
}
}
func doList(db *gorm.DB) {
repo := repository.RepoBase[models.Cert]{}
repo.Init(db)
filter := CertFilter{
Alive: &TRUE,
}
certs, err := repo.List(filter, nil, nil)
if err != nil {
panic(err)
}
for n, cert := range *certs {
fmt.Printf(">> [%d] %+v %s (alive %t)\n", n, cert.Id, cert.CreatedAt, cert.Alive)
}
}
func doGet(db *gorm.DB) {
repo := repository.RepoBase[models.Cert]{}
repo.Init(db)
id := "db9fb837-3483-4736-819d-f427dc8cda23"
filter := CertFilter{
Id: &id,
}
cert, err := repo.Get(filter)
if err != nil {
panic(err)
}
fmt.Printf(">> %+v %s (alive %t)\n", cert.Id, cert.CreatedAt, cert.Alive)
}
func doExists(db *gorm.DB) {
repo := repository.RepoBase[models.Cert]{}
repo.Init(db)
id := "db9fb837-3483-4736-819d-f427dc8cda23"
filter := CertFilter{
Id: &id,
}
exists, err := repo.Exists(filter)
if err != nil {
panic(err)
}
fmt.Printf(">> EXISTS: %t\n", exists)
}
func main() {
cfg.Init()
logging.Init()
defer logging.Log.Sync()
db := db.InitDB()
doMagic(db)
// doList(db)
// doGet(db)
// doExists(db)
// inheritance.DoInheritanceTest()
}