3
0

Allow discovery route to search deleted resources

This commit is contained in:
Vivek Patel
2022-03-30 17:08:07 +05:30
committed by Tomaž Jerman
parent 9a93473cea
commit 09d69f1244
5 changed files with 88 additions and 16 deletions

View File

@@ -26,6 +26,7 @@ endpoints:
parameters:
get:
- { name: userID, type: uint64, title: User ID }
- { name: deleted, type: uint, title: Exclude (0, default), include (1) or return only (2) deleted users }
- name: composeNamespaces
method: GET
@@ -34,6 +35,7 @@ endpoints:
parameters:
get:
- { name: namespaceID, type: uint64, title: Namespace ID }
- { name: deleted, type: uint, title: Exclude (0, default), include (1) or return only (2) deleted namespaces }
- name: composeModules
method: GET
@@ -44,6 +46,7 @@ endpoints:
- { name: namespaceID, type: uint64, title: Namespace ID }
get:
- { name: moduleID, type: uint64, title: Module ID }
- { name: deleted, type: uint, title: Exclude (0, default), include (1) or return only (2) deleted modules }
- name: composeRecords
method: GET
@@ -55,6 +58,7 @@ endpoints:
- { name: moduleID, type: uint64, title: Module ID }
get:
- { name: recordID, type: uint64, title: Record ID }
- { name: deleted, type: uint, title: Exclude (0, default), include (1) or return only (2) deleted records }
- path: "/feed"
entrypoint: feed

View File

@@ -81,7 +81,7 @@ func ComposeResources() *composeResources {
}
}
func (d composeResources) Namespaces(ctx context.Context, limit uint, cur string, namespaceID uint64) (rsp *Response, err error) {
func (d composeResources) Namespaces(ctx context.Context, limit uint, cur string, namespaceID uint64, deleted uint) (rsp *Response, err error) {
return rsp, func() (err error) {
if !d.settings.Discovery.ComposeNamespaces.Enabled {
return errors.Internal("compose namespace indexing disabled")
@@ -93,7 +93,7 @@ func (d composeResources) Namespaces(ctx context.Context, limit uint, cur string
pf cmpTypes.PageFilter
nss cmpTypes.NamespaceSet
f = cmpTypes.NamespaceFilter{
Deleted: filter.StateExcluded,
Deleted: filter.State(deleted),
}
)
@@ -175,7 +175,7 @@ func (d composeResources) Namespaces(ctx context.Context, limit uint, cur string
}()
}
func (d composeResources) Modules(ctx context.Context, namespaceID uint64, limit uint, cur string, moduleID uint64) (rsp *Response, err error) {
func (d composeResources) Modules(ctx context.Context, namespaceID uint64, limit uint, cur string, moduleID uint64, deleted uint) (rsp *Response, err error) {
return rsp, func() (err error) {
if !d.settings.Discovery.ComposeModules.Enabled {
return errors.Internal("compose module indexing disabled")
@@ -186,7 +186,7 @@ func (d composeResources) Modules(ctx context.Context, namespaceID uint64, limit
mm cmpTypes.ModuleSet
f = cmpTypes.ModuleFilter{
NamespaceID: namespaceID,
Deleted: filter.StateExcluded,
Deleted: filter.State(deleted),
}
)
@@ -262,7 +262,7 @@ func (d composeResources) Modules(ctx context.Context, namespaceID uint64, limit
}()
}
func (d composeResources) Records(ctx context.Context, namespaceID, moduleID uint64, limit uint, cur string, recordID uint64) (rsp *Response, err error) {
func (d composeResources) Records(ctx context.Context, namespaceID, moduleID uint64, limit uint, cur string, recordID uint64, deleted uint) (rsp *Response, err error) {
return rsp, func() (err error) {
if !d.settings.Discovery.ComposeRecords.Enabled {
return errors.Internal("compose record indexing disabled")
@@ -275,7 +275,7 @@ func (d composeResources) Records(ctx context.Context, namespaceID, moduleID uin
f = cmpTypes.RecordFilter{
NamespaceID: namespaceID,
ModuleID: moduleID,
Deleted: filter.StateExcluded,
Deleted: filter.State(deleted),
}
)

View File

@@ -41,7 +41,7 @@ func SystemResources() *systemResources {
}
}
func (d systemResources) Users(ctx context.Context, limit uint, cur string, userID uint64) (rsp *Response, err error) {
func (d systemResources) Users(ctx context.Context, limit uint, cur string, userID uint64, deleted uint) (rsp *Response, err error) {
return rsp, func() (err error) {
if !d.settings.Discovery.SystemUsers.Enabled {
return errors.Internal("system user indexing disabled")
@@ -50,7 +50,7 @@ func (d systemResources) Users(ctx context.Context, limit uint, cur string, user
var (
uu types.UserSet
f = types.UserFilter{
Deleted: filter.StateExcluded,
Deleted: filter.State(deleted),
}
)

View File

@@ -48,6 +48,11 @@ type (
//
// User ID
UserID uint64 `json:",string"`
// Deleted GET parameter
//
// Exclude (0
Deleted uint
}
ResourcesComposeNamespaces struct {
@@ -65,6 +70,11 @@ type (
//
// Namespace ID
NamespaceID uint64 `json:",string"`
// Deleted GET parameter
//
// Exclude (0
Deleted uint
}
ResourcesComposeModules struct {
@@ -87,6 +97,11 @@ type (
//
// Module ID
ModuleID uint64 `json:",string"`
// Deleted GET parameter
//
// Exclude (0
Deleted uint
}
ResourcesComposeRecords struct {
@@ -114,6 +129,11 @@ type (
//
// Record ID
RecordID uint64 `json:",string"`
// Deleted GET parameter
//
// Exclude (0
Deleted uint
}
)
@@ -128,6 +148,7 @@ func (r ResourcesSystemUsers) Auditable() map[string]interface{} {
"limit": r.Limit,
"pageCursor": r.PageCursor,
"userID": r.UserID,
"deleted": r.Deleted,
}
}
@@ -146,6 +167,11 @@ func (r ResourcesSystemUsers) GetUserID() uint64 {
return r.UserID
}
// Auditable returns all auditable/loggable parameters
func (r ResourcesSystemUsers) GetDeleted() uint {
return r.Deleted
}
// Fill processes request and fills internal variables
func (r *ResourcesSystemUsers) Fill(req *http.Request) (err error) {
@@ -171,6 +197,12 @@ func (r *ResourcesSystemUsers) Fill(req *http.Request) (err error) {
return err
}
}
if val, ok := tmp["deleted"]; ok && len(val) > 0 {
r.Deleted, err = payload.ParseUint(val[0]), nil
if err != nil {
return err
}
}
}
return err
@@ -187,6 +219,7 @@ func (r ResourcesComposeNamespaces) Auditable() map[string]interface{} {
"limit": r.Limit,
"pageCursor": r.PageCursor,
"namespaceID": r.NamespaceID,
"deleted": r.Deleted,
}
}
@@ -205,6 +238,11 @@ func (r ResourcesComposeNamespaces) GetNamespaceID() uint64 {
return r.NamespaceID
}
// Auditable returns all auditable/loggable parameters
func (r ResourcesComposeNamespaces) GetDeleted() uint {
return r.Deleted
}
// Fill processes request and fills internal variables
func (r *ResourcesComposeNamespaces) Fill(req *http.Request) (err error) {
@@ -230,6 +268,12 @@ func (r *ResourcesComposeNamespaces) Fill(req *http.Request) (err error) {
return err
}
}
if val, ok := tmp["deleted"]; ok && len(val) > 0 {
r.Deleted, err = payload.ParseUint(val[0]), nil
if err != nil {
return err
}
}
}
return err
@@ -247,6 +291,7 @@ func (r ResourcesComposeModules) Auditable() map[string]interface{} {
"limit": r.Limit,
"pageCursor": r.PageCursor,
"moduleID": r.ModuleID,
"deleted": r.Deleted,
}
}
@@ -270,6 +315,11 @@ func (r ResourcesComposeModules) GetModuleID() uint64 {
return r.ModuleID
}
// Auditable returns all auditable/loggable parameters
func (r ResourcesComposeModules) GetDeleted() uint {
return r.Deleted
}
// Fill processes request and fills internal variables
func (r *ResourcesComposeModules) Fill(req *http.Request) (err error) {
@@ -295,6 +345,12 @@ func (r *ResourcesComposeModules) Fill(req *http.Request) (err error) {
return err
}
}
if val, ok := tmp["deleted"]; ok && len(val) > 0 {
r.Deleted, err = payload.ParseUint(val[0]), nil
if err != nil {
return err
}
}
}
{
@@ -325,6 +381,7 @@ func (r ResourcesComposeRecords) Auditable() map[string]interface{} {
"limit": r.Limit,
"pageCursor": r.PageCursor,
"recordID": r.RecordID,
"deleted": r.Deleted,
}
}
@@ -353,6 +410,11 @@ func (r ResourcesComposeRecords) GetRecordID() uint64 {
return r.RecordID
}
// Auditable returns all auditable/loggable parameters
func (r ResourcesComposeRecords) GetDeleted() uint {
return r.Deleted
}
// Fill processes request and fills internal variables
func (r *ResourcesComposeRecords) Fill(req *http.Request) (err error) {
@@ -378,6 +440,12 @@ func (r *ResourcesComposeRecords) Fill(req *http.Request) (err error) {
return err
}
}
if val, ok := tmp["deleted"]; ok && len(val) > 0 {
r.Deleted, err = payload.ParseUint(val[0]), nil
if err != nil {
return err
}
}
}
{

View File

@@ -9,13 +9,13 @@ import (
type (
resources struct {
sys interface {
Users(ctx context.Context, limit uint, cur string, userID uint64) (*documents.Response, error)
Users(ctx context.Context, limit uint, cur string, userID uint64, deleted uint) (*documents.Response, error)
}
cmp interface {
Namespaces(ctx context.Context, limit uint, cur string, namespaceID uint64) (*documents.Response, error)
Modules(ctx context.Context, namespaceID uint64, limit uint, cur string, moduleID uint64) (*documents.Response, error)
Records(ctx context.Context, namespaceID, moduleID uint64, limit uint, cur string, recordID uint64) (*documents.Response, error)
Namespaces(ctx context.Context, limit uint, cur string, namespaceID uint64, deleted uint) (*documents.Response, error)
Modules(ctx context.Context, namespaceID uint64, limit uint, cur string, moduleID uint64, deleted uint) (*documents.Response, error)
Records(ctx context.Context, namespaceID, moduleID uint64, limit uint, cur string, recordID uint64, deleted uint) (*documents.Response, error)
}
}
)
@@ -28,17 +28,17 @@ func Resources() *resources {
}
func (ctrl resources) SystemUsers(ctx context.Context, r *request.ResourcesSystemUsers) (interface{}, error) {
return ctrl.sys.Users(ctx, r.Limit, r.PageCursor, r.UserID)
return ctrl.sys.Users(ctx, r.Limit, r.PageCursor, r.UserID, r.Deleted)
}
func (ctrl resources) ComposeNamespaces(ctx context.Context, r *request.ResourcesComposeNamespaces) (interface{}, error) {
return ctrl.cmp.Namespaces(ctx, r.Limit, r.PageCursor, r.NamespaceID)
return ctrl.cmp.Namespaces(ctx, r.Limit, r.PageCursor, r.NamespaceID, r.Deleted)
}
func (ctrl resources) ComposeModules(ctx context.Context, r *request.ResourcesComposeModules) (interface{}, error) {
return ctrl.cmp.Modules(ctx, r.NamespaceID, r.Limit, r.PageCursor, r.ModuleID)
return ctrl.cmp.Modules(ctx, r.NamespaceID, r.Limit, r.PageCursor, r.ModuleID, r.Deleted)
}
func (ctrl resources) ComposeRecords(ctx context.Context, r *request.ResourcesComposeRecords) (interface{}, error) {
return ctrl.cmp.Records(ctx, r.NamespaceID, r.ModuleID, r.Limit, r.PageCursor, r.RecordID)
return ctrl.cmp.Records(ctx, r.NamespaceID, r.ModuleID, r.Limit, r.PageCursor, r.RecordID, r.Deleted)
}