73 lines
2.1 KiB
Go
73 lines
2.1 KiB
Go
package services
|
|
|
|
import (
|
|
"context"
|
|
|
|
"quyun/v2/database/models"
|
|
"quyun/v2/pkg/consts"
|
|
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
// @provider
|
|
type tenant struct{}
|
|
|
|
func (t *tenant) ContainsUserID(ctx context.Context, tenantID, userID int64) (*models.User, error) {
|
|
tbl, query := models.TenantUserQuery.QueryContext(ctx)
|
|
|
|
_, err := query.Where(tbl.TenantID.Eq(tenantID), tbl.UserID.Eq(userID)).First()
|
|
if err != nil {
|
|
return nil, errors.Wrapf(err, "ContainsUserID failed, tenantID: %d, userID: %d", tenantID, userID)
|
|
}
|
|
|
|
return User.FindByID(ctx, userID)
|
|
}
|
|
|
|
// AddUser
|
|
func (t *tenant) AddUser(ctx context.Context, tenantID, userID int64) error {
|
|
tenantUser := &models.TenantUser{
|
|
TenantID: tenantID,
|
|
UserID: userID,
|
|
}
|
|
|
|
if err := tenantUser.Create(ctx); err != nil {
|
|
return errors.Wrapf(err, "AddUser failed, tenantID: %d, userID: %d", tenantID, userID)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// RemoveUser
|
|
func (t *tenant) RemoveUser(ctx context.Context, tenantID, userID int64) error {
|
|
tbl, query := models.TenantUserQuery.QueryContext(ctx)
|
|
tenantUser, err := query.Where(tbl.TenantID.Eq(tenantID), tbl.UserID.Eq(userID)).First()
|
|
if err != nil {
|
|
return errors.Wrapf(err, "RemoveUser failed to find, tenantID: %d, userID: %d", tenantID, userID)
|
|
}
|
|
|
|
_, err = tenantUser.Delete(ctx)
|
|
if err != nil {
|
|
return errors.Wrapf(err, "RemoveUser failed to delete, tenantID: %d, userID: %d", tenantID, userID)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// SetUserRole
|
|
func (t *tenant) SetUserRole(ctx context.Context, tenantID, userID int64, role ...consts.TenantUserRole) error {
|
|
tbl, query := models.TenantUserQuery.QueryContext(ctx)
|
|
tenantUser, err := query.Where(tbl.TenantID.Eq(tenantID), tbl.UserID.Eq(userID)).First()
|
|
if err != nil {
|
|
return errors.Wrapf(err, "SetUserRole failed to find, tenantID: %d, userID: %d", tenantID, userID)
|
|
}
|
|
|
|
tenantUser.Role = role
|
|
if _, err := tenantUser.Update(ctx); err != nil {
|
|
return errors.Wrapf(err, "SetUserRole failed to update, tenantID: %d, userID: %d", tenantID, userID)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Users
|
|
func (t *tenant) Users(ctx context.Context, tenantID int64) ([]*models.User, int64, error) {
|
|
return nil, 0, nil
|
|
}
|