52 lines
2.2 KiB
Go
52 lines
2.2 KiB
Go
package auth
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
type UserRepository interface {
|
|
Create(ctx context.Context, user *User) error
|
|
CreateWithAccount(ctx context.Context, user *User, account *Account) error
|
|
UpsertWithAccount(ctx context.Context, email string, user *User, account *Account) (isNewUser bool, err error)
|
|
FindByID(ctx context.Context, id uuid.UUID, opts ...UserQueryOption) (*User, error)
|
|
FindByEmail(ctx context.Context, email string, opts ...UserQueryOption) (*User, error)
|
|
Update(ctx context.Context, user *User) error
|
|
Delete(ctx context.Context, id uuid.UUID) error
|
|
List(ctx context.Context, limit, offset int, opts ...UserQueryOption) ([]*User, error)
|
|
Count(ctx context.Context) (int64, error)
|
|
UserRoles(ctx context.Context, userID uuid.UUID) ([]Role, error)
|
|
UserAccounts(ctx context.Context, userID uuid.UUID) ([]Account, error)
|
|
}
|
|
|
|
type RoleRepository interface {
|
|
Create(ctx context.Context, role *Role) error
|
|
FindByID(ctx context.Context, id uuid.UUID) (*Role, error)
|
|
FindByName(ctx context.Context, name string) (*Role, error)
|
|
Update(ctx context.Context, role *Role) error
|
|
Delete(ctx context.Context, id uuid.UUID) error
|
|
List(ctx context.Context, limit, offset int) ([]*Role, error)
|
|
Count(ctx context.Context) (int64, error)
|
|
}
|
|
|
|
type AccountRepository interface {
|
|
Create(ctx context.Context, account *Account) error
|
|
FindByID(ctx context.Context, id uuid.UUID) (*Account, error)
|
|
FindByUserID(ctx context.Context, userID uuid.UUID) ([]*Account, error)
|
|
Update(ctx context.Context, account *Account) error
|
|
Delete(ctx context.Context, id uuid.UUID) error
|
|
List(ctx context.Context, limit, offset int) ([]*Account, error)
|
|
Count(ctx context.Context) (int64, error)
|
|
}
|
|
|
|
type UserRoleRepository interface {
|
|
Create(ctx context.Context, userID, roleID uuid.UUID) error
|
|
FindByUserID(ctx context.Context, userID uuid.UUID) ([]*Role, error)
|
|
FindByRoleID(ctx context.Context, roleID uuid.UUID) ([]*User, error)
|
|
Delete(ctx context.Context, userID, roleID uuid.UUID) error
|
|
DeleteByUserID(ctx context.Context, userID uuid.UUID) error
|
|
DeleteByRoleID(ctx context.Context, roleID uuid.UUID) error
|
|
Exists(ctx context.Context, userID, roleID uuid.UUID) (bool, error)
|
|
}
|