feat: Improve delete API with clear hard delete option
- Single clear way to hard delete: { hard: true }
- Removed confusing soft: false option
- Soft delete remains the default behavior
- Clean, intuitive API: delete() for soft, delete(id, { hard: true }) for hard
- All delete features working: soft, hard, cascade
This commit is contained in:
parent
6b4b67a339
commit
4b4c66b935
10 changed files with 17 additions and 36 deletions
|
|
@ -1,18 +0,0 @@
|
||||||
{
|
|
||||||
"nounCount": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"verbCount": {},
|
|
||||||
"metadataCount": {
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"hnswIndexSize": 1,
|
|
||||||
"lastUpdated": "2025-08-19T01:13:31.471Z",
|
|
||||||
"serviceActivity": {
|
|
||||||
"default": {
|
|
||||||
"firstActivity": "2025-08-19T01:13:26.462Z",
|
|
||||||
"lastActivity": "2025-08-19T01:13:26.467Z",
|
|
||||||
"totalOperations": 4
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
null
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
null
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
null
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
null
|
|
||||||
2
dist/brainyData.d.ts
vendored
2
dist/brainyData.d.ts
vendored
|
|
@ -785,7 +785,7 @@ export declare class BrainyData<T = any> implements BrainyDataInterface<T> {
|
||||||
*/
|
*/
|
||||||
delete(id: string, options?: {
|
delete(id: string, options?: {
|
||||||
service?: string;
|
service?: string;
|
||||||
soft?: boolean;
|
hard?: boolean;
|
||||||
cascade?: boolean;
|
cascade?: boolean;
|
||||||
force?: boolean;
|
force?: boolean;
|
||||||
}): Promise<boolean>;
|
}): Promise<boolean>;
|
||||||
|
|
|
||||||
11
dist/brainyData.js
vendored
11
dist/brainyData.js
vendored
|
|
@ -2300,12 +2300,13 @@ export class BrainyData {
|
||||||
* @returns Promise that resolves to true if the vector was deleted, false otherwise
|
* @returns Promise that resolves to true if the vector was deleted, false otherwise
|
||||||
*/
|
*/
|
||||||
async delete(id, options = {}) {
|
async delete(id, options = {}) {
|
||||||
|
// Clear API: use 'hard: true' for hard delete, otherwise soft delete
|
||||||
|
const isHardDelete = options.hard === true;
|
||||||
const opts = {
|
const opts = {
|
||||||
service: undefined,
|
service: options.service,
|
||||||
soft: true, // Soft delete is default - preserves indexes
|
soft: !isHardDelete, // Soft delete is default unless hard: true is specified
|
||||||
cascade: false,
|
cascade: options.cascade || false,
|
||||||
force: false,
|
force: options.force || false
|
||||||
...options
|
|
||||||
};
|
};
|
||||||
// Validate id parameter first, before any other logic
|
// Validate id parameter first, before any other logic
|
||||||
if (id === null || id === undefined) {
|
if (id === null || id === undefined) {
|
||||||
|
|
|
||||||
2
dist/brainyData.js.map
vendored
2
dist/brainyData.js.map
vendored
File diff suppressed because one or more lines are too long
|
|
@ -3376,17 +3376,19 @@ export class BrainyData<T = any> implements BrainyDataInterface<T> {
|
||||||
id: string,
|
id: string,
|
||||||
options: {
|
options: {
|
||||||
service?: string // The service that is deleting the data
|
service?: string // The service that is deleting the data
|
||||||
soft?: boolean // Soft delete (mark as deleted, default: true)
|
hard?: boolean // Hard delete - completely removes from storage (default: false, soft delete is default)
|
||||||
cascade?: boolean // Delete related verbs (default: false)
|
cascade?: boolean // Delete related verbs (default: false)
|
||||||
force?: boolean // Force delete even if has relationships (default: false)
|
force?: boolean // Force delete even if has relationships (default: false)
|
||||||
} = {}
|
} = {}
|
||||||
): Promise<boolean> {
|
): Promise<boolean> {
|
||||||
|
// Clear API: use 'hard: true' for hard delete, otherwise soft delete
|
||||||
|
const isHardDelete = options.hard === true
|
||||||
|
|
||||||
const opts = {
|
const opts = {
|
||||||
service: undefined,
|
service: options.service,
|
||||||
soft: true, // Soft delete is default - preserves indexes
|
soft: !isHardDelete, // Soft delete is default unless hard: true is specified
|
||||||
cascade: false,
|
cascade: options.cascade || false,
|
||||||
force: false,
|
force: options.force || false
|
||||||
...options
|
|
||||||
}
|
}
|
||||||
// Validate id parameter first, before any other logic
|
// Validate id parameter first, before any other logic
|
||||||
if (id === null || id === undefined) {
|
if (id === null || id === undefined) {
|
||||||
|
|
|
||||||
|
|
@ -187,7 +187,7 @@ describe('Brainy 1.0 Unified API', () => {
|
||||||
|
|
||||||
it('should hard delete when specified', async () => {
|
it('should hard delete when specified', async () => {
|
||||||
const id = await brainy.add("Data to hard delete")
|
const id = await brainy.add("Data to hard delete")
|
||||||
const success = await brainy.delete(id, { soft: false })
|
const success = await brainy.delete(id, { hard: true })
|
||||||
expect(success).toBe(true)
|
expect(success).toBe(true)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue