Chang lue Tsen 8addcc584b init: 1.0.0
2025-04-25 12:08:29 +09:00

61 lines
1.5 KiB
Go

package auth
import (
"context"
"fmt"
"github.com/redis/go-redis/v9"
"gorm.io/gorm"
)
type customAuthLogicModel interface {
GetAuthListByPage(ctx context.Context) ([]*Auth, error)
FindOneByMethod(ctx context.Context, platform string) (*Auth, error)
FindAll(ctx context.Context) ([]*Auth, error)
}
// NewModel returns a model for the database table.
func NewModel(conn *gorm.DB, c *redis.Client) Model {
return &customAuthModel{
defaultAuthModel: newAuthModel(conn, c),
}
}
type Filter struct {
Show *bool
Pinned *bool
Popup *bool
Search string
}
// GetAuthListByPage get auth list by page
func (m *customAuthModel) GetAuthListByPage(ctx context.Context) ([]*Auth, error) {
var list []*Auth
err := m.QueryNoCacheCtx(ctx, &list, func(conn *gorm.DB, v interface{}) error {
conn = conn.Model(&Auth{})
return conn.Find(v).Error
})
return list, err
}
// FindOneByMethod find one by method
func (m *customAuthModel) FindOneByMethod(ctx context.Context, method string) (*Auth, error) {
key := fmt.Sprintf("%s%s", cacheAuthMethodPrefix, method)
var data Auth
err := m.QueryCtx(ctx, &data, key, func(conn *gorm.DB, v interface{}) error {
return conn.Model(&Auth{}).Where("method = ?", method).First(v).Error
})
return &data, err
}
// FindAll find all
func (m *customAuthModel) FindAll(ctx context.Context) ([]*Auth, error) {
var list []*Auth
err := m.QueryNoCacheCtx(ctx, &list, func(conn *gorm.DB, v interface{}) error {
conn = conn.Model(&Auth{})
return conn.Find(v).Error
})
return list, err
}