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) }