79 lines
1.4 KiB
Go
79 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"platform/pkg/orm"
|
|
m "platform/web/models"
|
|
q "platform/web/queries"
|
|
"time"
|
|
|
|
"github.com/glebarez/sqlite"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func main() {
|
|
open, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{})
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
err = open.AutoMigrate(&m.Resource{}, &m.ResourcePss{})
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
q.SetDefault(open)
|
|
|
|
var r = &m.Resource{
|
|
ID: 1,
|
|
UserID: 101,
|
|
Active: true,
|
|
}
|
|
open.Create(r)
|
|
var resourcePss = &m.ResourcePss{
|
|
ID: 1,
|
|
ResourceID: 1,
|
|
Type: 1,
|
|
Live: 180,
|
|
Expire: time.Now().AddDate(1, 0, 0),
|
|
DailyLimit: 10000,
|
|
}
|
|
open.Create(resourcePss)
|
|
|
|
var resource = new(ResourceInfo)
|
|
data := q.Resource.As("data")
|
|
pss := q.ResourcePss.As("pss")
|
|
err = data.Scopes(orm.Alias(data)).
|
|
Select(
|
|
data.ID, data.UserID, data.Active,
|
|
pss.Type, pss.Live, pss.DailyUsed, pss.DailyLimit, pss.DailyLast, pss.Quota, pss.Used, pss.Expire,
|
|
).
|
|
LeftJoin(q.ResourcePss.As("pss"), pss.ResourceID.EqCol(data.ID)).
|
|
Where(data.ID.Eq(1)).
|
|
Scan(&resource)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
bytes, err := json.MarshalIndent(resource, "", " ")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
println(string(bytes))
|
|
}
|
|
|
|
type ResourceInfo struct {
|
|
Id int32
|
|
UserId int32
|
|
Active bool
|
|
Type int32
|
|
Live int32
|
|
DailyLimit int32
|
|
DailyUsed int32
|
|
DailyLast time.Time
|
|
Quota int32
|
|
Used int32
|
|
Expire time.Time
|
|
}
|