44 lines
1.4 KiB
Go
44 lines
1.4 KiB
Go
package store
|
|
|
|
import (
|
|
adapter "github.com/tinode/chat/server/db"
|
|
"github.com/tinode/chat/server/store/types"
|
|
)
|
|
|
|
type InternalAdminQueryPersistenceInterface interface {
|
|
Query(types.TenantID, string, string, []any, int, int) (*types.InternalAdminQueryResult, error)
|
|
QueryOne(types.TenantID, string, []any) (map[string]any, error)
|
|
}
|
|
|
|
type internalAdminQueryMapper struct{}
|
|
|
|
var InternalAdminQueries InternalAdminQueryPersistenceInterface = internalAdminQueryMapper{}
|
|
|
|
func internalAdminQueryAdapter(tenantID types.TenantID) (adapter.TenantInternalAdminQueryAdapter, error) {
|
|
business, err := tenantBusinessAdapter(tenantID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
queryAdp, ok := business.(adapter.TenantInternalAdminQueryAdapter)
|
|
if !ok {
|
|
return nil, types.ErrUnsupported
|
|
}
|
|
return queryAdp, nil
|
|
}
|
|
|
|
func (internalAdminQueryMapper) Query(tenantID types.TenantID, query string, countQuery string, args []any, page, perPage int) (*types.InternalAdminQueryResult, error) {
|
|
queryAdp, err := internalAdminQueryAdapter(tenantID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return queryAdp.TenantInternalAdminQuery(tenantID, query, countQuery, args, page, perPage)
|
|
}
|
|
|
|
func (internalAdminQueryMapper) QueryOne(tenantID types.TenantID, query string, args []any) (map[string]any, error) {
|
|
queryAdp, err := internalAdminQueryAdapter(tenantID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return queryAdp.TenantInternalAdminQueryOne(tenantID, query, args)
|
|
}
|