132 lines
2.9 KiB
Go
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)
|
|
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, nil)
|
|
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()
|
|
}
|