github.com/ngocphuongnb/tetua@v0.0.7-alpha/packages/entrepository/permission.go (about) 1 package entrepository 2 3 import ( 4 "context" 5 6 e "github.com/ngocphuongnb/tetua/app/entities" 7 "github.com/ngocphuongnb/tetua/packages/entrepository/ent" 8 "github.com/ngocphuongnb/tetua/packages/entrepository/ent/permission" 9 ) 10 11 type PermissionRepository = BaseRepository[e.Permission, ent.Permission, *ent.PermissionQuery, *e.PermissionFilter] 12 13 func CreatePermissionRepository(client *ent.Client) *PermissionRepository { 14 return &PermissionRepository{ 15 Name: "permission", 16 Client: client, 17 ConvertFn: entPermissionToPermission, 18 ByIDFn: func(ctx context.Context, client *ent.Client, id int) (*ent.Permission, error) { 19 return client.Permission.Query().Where(permission.IDEQ(id)).Only(ctx) 20 }, 21 DeleteByIDFn: func(ctx context.Context, client *ent.Client, id int) error { 22 return client.Permission.DeleteOneID(id).Exec(ctx) 23 }, 24 CreateFn: func(ctx context.Context, client *ent.Client, data *e.Permission) (*ent.Permission, error) { 25 return client.Permission.Create(). 26 SetAction(data.Action). 27 SetValue(data.Value). 28 SetRoleID(data.RoleID). 29 Save(ctx) 30 }, 31 UpdateFn: func(ctx context.Context, client *ent.Client, data *e.Permission) (*ent.Permission, error) { 32 return client.Permission.UpdateOneID(data.ID). 33 SetAction(data.Action). 34 SetValue(data.Value). 35 SetRoleID(data.RoleID). 36 Save(ctx) 37 }, 38 QueryFilterFn: func(client *ent.Client, filters ...*e.PermissionFilter) *ent.PermissionQuery { 39 query := client.Permission.Query() 40 if len(filters) > 0 { 41 if len(filters[0].RoleIDs) > 0 { 42 query = query.Where(permission.RoleIDIn(filters[0].RoleIDs...)) 43 } 44 45 if len(filters[0].ExcludeIDs) > 0 { 46 query = query.Where(permission.IDNotIn(filters[0].ExcludeIDs...)) 47 } 48 } 49 50 if filters[0].Search != "" { 51 query = query.Where(permission.ActionContainsFold(filters[0].Search)) 52 } 53 54 return query 55 }, 56 FindFn: func(ctx context.Context, query *ent.PermissionQuery, filters ...*e.PermissionFilter) ([]*ent.Permission, error) { 57 page, limit, sorts := getPaginateParams(filters[0]) 58 return query. 59 WithRole(). 60 Limit(limit). 61 Offset((page - 1) * limit). 62 Order(sorts...).All(ctx) 63 }, 64 } 65 }