Fix badger prefix scans

This commit is contained in:
Pijus Kamandulis 2025-09-16 19:27:52 +03:00
parent c988741f8e
commit 89b914310c
6 changed files with 21 additions and 15 deletions

View File

@ -22,7 +22,8 @@ func (r *BadgerDataStore) GetAllCollections(databaseId string) ([]datastore.Coll
return nil, datastore.StatusNotFound return nil, datastore.StatusNotFound
} }
colls, status := listByPrefix[datastore.Collection](r.db, generateKey(resourceid.ResourceTypeCollection, databaseId, "", "")) prefix := generateKey(resourceid.ResourceTypeCollection, databaseId, "", "") + "/"
colls, status := listByPrefix[datastore.Collection](r.db, prefix)
if status == datastore.StatusOk { if status == datastore.StatusOk {
return colls, datastore.StatusOk return colls, datastore.StatusOk
} }
@ -49,10 +50,10 @@ func (r *BadgerDataStore) DeleteCollection(databaseId string, collectionId strin
defer txn.Discard() defer txn.Discard()
prefixes := []string{ prefixes := []string{
generateKey(resourceid.ResourceTypeDocument, databaseId, collectionId, ""), generateKey(resourceid.ResourceTypeDocument, databaseId, collectionId, "") + "/",
generateKey(resourceid.ResourceTypeTrigger, databaseId, collectionId, ""), generateKey(resourceid.ResourceTypeTrigger, databaseId, collectionId, "") + "/",
generateKey(resourceid.ResourceTypeStoredProcedure, databaseId, collectionId, ""), generateKey(resourceid.ResourceTypeStoredProcedure, databaseId, collectionId, "") + "/",
generateKey(resourceid.ResourceTypeUserDefinedFunction, databaseId, collectionId, ""), generateKey(resourceid.ResourceTypeUserDefinedFunction, databaseId, collectionId, "") + "/",
collectionKey, collectionKey,
} }
for _, prefix := range prefixes { for _, prefix := range prefixes {

View File

@ -38,11 +38,11 @@ func (r *BadgerDataStore) DeleteDatabase(id string) datastore.DataStoreStatus {
defer txn.Discard() defer txn.Discard()
prefixes := []string{ prefixes := []string{
generateKey(resourceid.ResourceTypeCollection, id, "", ""), generateKey(resourceid.ResourceTypeCollection, id, "", "") + "/",
generateKey(resourceid.ResourceTypeDocument, id, "", ""), generateKey(resourceid.ResourceTypeDocument, id, "", "") + "/",
generateKey(resourceid.ResourceTypeTrigger, id, "", ""), generateKey(resourceid.ResourceTypeTrigger, id, "", "") + "/",
generateKey(resourceid.ResourceTypeStoredProcedure, id, "", ""), generateKey(resourceid.ResourceTypeStoredProcedure, id, "", "") + "/",
generateKey(resourceid.ResourceTypeUserDefinedFunction, id, "", ""), generateKey(resourceid.ResourceTypeUserDefinedFunction, id, "", "") + "/",
databaseKey, databaseKey,
} }
for _, prefix := range prefixes { for _, prefix := range prefixes {

View File

@ -24,7 +24,8 @@ func (r *BadgerDataStore) GetAllDocuments(databaseId string, collectionId string
return nil, datastore.StatusNotFound return nil, datastore.StatusNotFound
} }
docs, status := listByPrefix[datastore.Document](r.db, generateKey(resourceid.ResourceTypeDocument, databaseId, collectionId, "")) prefix := generateKey(resourceid.ResourceTypeDocument, databaseId, collectionId, "") + "/"
docs, status := listByPrefix[datastore.Document](r.db, prefix)
if status == datastore.StatusOk { if status == datastore.StatusOk {
return docs, datastore.StatusOk return docs, datastore.StatusOk
} }
@ -45,7 +46,8 @@ func (r *BadgerDataStore) GetDocumentIterator(databaseId string, collectionId st
return nil, datastore.StatusNotFound return nil, datastore.StatusNotFound
} }
iter := NewBadgerDocumentIterator(txn, generateKey(resourceid.ResourceTypeDocument, databaseId, collectionId, "")) prefix := generateKey(resourceid.ResourceTypeDocument, databaseId, collectionId, "") + "/"
iter := NewBadgerDocumentIterator(txn, prefix)
return iter, datastore.StatusOk return iter, datastore.StatusOk
} }

View File

@ -24,7 +24,8 @@ func (r *BadgerDataStore) GetAllStoredProcedures(databaseId string, collectionId
return nil, datastore.StatusNotFound return nil, datastore.StatusNotFound
} }
storedProcedures, status := listByPrefix[datastore.StoredProcedure](r.db, generateKey(resourceid.ResourceTypeStoredProcedure, databaseId, collectionId, "")) prefix := generateKey(resourceid.ResourceTypeStoredProcedure, databaseId, collectionId, "") + "/"
storedProcedures, status := listByPrefix[datastore.StoredProcedure](r.db, prefix)
if status == datastore.StatusOk { if status == datastore.StatusOk {
return storedProcedures, datastore.StatusOk return storedProcedures, datastore.StatusOk
} }

View File

@ -24,7 +24,8 @@ func (r *BadgerDataStore) GetAllTriggers(databaseId string, collectionId string)
return nil, datastore.StatusNotFound return nil, datastore.StatusNotFound
} }
triggers, status := listByPrefix[datastore.Trigger](r.db, generateKey(resourceid.ResourceTypeTrigger, databaseId, collectionId, "")) prefix := generateKey(resourceid.ResourceTypeTrigger, databaseId, collectionId, "") + "/"
triggers, status := listByPrefix[datastore.Trigger](r.db, prefix)
if status == datastore.StatusOk { if status == datastore.StatusOk {
return triggers, datastore.StatusOk return triggers, datastore.StatusOk
} }

View File

@ -24,7 +24,8 @@ func (r *BadgerDataStore) GetAllUserDefinedFunctions(databaseId string, collecti
return nil, datastore.StatusNotFound return nil, datastore.StatusNotFound
} }
udfs, status := listByPrefix[datastore.UserDefinedFunction](r.db, generateKey(resourceid.ResourceTypeUserDefinedFunction, databaseId, collectionId, "")) prefix := generateKey(resourceid.ResourceTypeUserDefinedFunction, databaseId, collectionId, "") + "/"
udfs, status := listByPrefix[datastore.UserDefinedFunction](r.db, prefix)
if status == datastore.StatusOk { if status == datastore.StatusOk {
return udfs, datastore.StatusOk return udfs, datastore.StatusOk
} }