package domain import "context" type PermissionRepository interface { Create(ctx context.Context, perm *Permission) error FindByID(ctx context.Context, id uint) (*Permission, error) FindByCode(ctx context.Context, code string) (*Permission, error) FindAll(ctx context.Context) ([]Permission, error) FindByModule(ctx context.Context, module string) ([]Permission, error) } type RoleRepository interface { Create(ctx context.Context, role *Role) error FindByID(ctx context.Context, tenantID string, id uint) (*Role, error) FindByIDWithPermissions(ctx context.Context, tenantID string, id uint) (*Role, error) FindByTenant(ctx context.Context, tenantID string) ([]Role, error) Update(ctx context.Context, role *Role) error Delete(ctx context.Context, tenantID string, id uint) error SetPermissions(ctx context.Context, roleID uint, permIDs []uint) error } type UserRoleRepository interface { Assign(ctx context.Context, ur *UserRole) error Remove(ctx context.Context, userID uint, tenantID string, roleID uint) error FindByUser(ctx context.Context, userID uint, tenantID string) ([]UserRole, error) FindRolesByUser(ctx context.Context, userID uint, tenantID string) ([]Role, error) }