Skip to main content

DeletableCollection

Defined in: domain/DeletableCollection.ts:26

Represents a collection of deletable entities. Extends UpdatableCollection to provide additional functionality for managing deletable items.

Remarks

Use DeletableCollection.delete and DeletableCollection.undelete to soft-delete and restore items. Use DeletableCollection.getItems to filter deleted/non-deleted items.

Example

const collection = DeletableCollection.create<MyEntity, number>("/api/v1/entities", data => new MyEntity(data.id, ...));
await collection.delete(1);
await collection.undelete(1);
const activeItems = await collection.refresh();
const deletedItems = collection.getItems(TrueFalseOnly.Only);

Extends

Extended by

Type Parameters

T

T extends Deletable<U>

The entity type, which must extend Deletable.

U

U

The type of the entity's unique identifier.

Constructors

Constructor

new DeletableCollection<T, U>(transform): DeletableCollection<T, U>;

Defined in: domain/DeletableCollection.ts:40

Constructs a new DeletableCollection.

Parameters

transform

Optional function to transform raw API data to entity type T.

null | (data) => T

Returns

DeletableCollection<T, U>

Overrides

UpdatableCollection.constructor

Accessors

length

Get Signature

get length(): number;

Defined in: domain/DomainCollection.ts:214

The number of items in the collection.

Returns

number

The item count.

Inherited from

UpdatableCollection.length

Methods

[iterator]()

iterator: Iterator<T>;

Defined in: domain/DomainCollection.ts:228

Iterator support for for...of loops.

Returns

Iterator<T>

Example

for (const item of collection) {
console.log(item);
}

Inherited from

UpdatableCollection.[iterator]


create()

create(item): Promise<T>;

Defined in: domain/UpdatableCollection.ts:46

Creates a new item in the collection and adds it locally.

Parameters

item

T

The item to create.

Returns

Promise<T>

A promise that resolves to the created item.

Throws

If an item with the same ID already exists.

Inherited from

UpdatableCollection.create


delete()

delete(id): Promise<boolean>;

Defined in: domain/DeletableCollection.ts:86

Soft-deletes an item in the collection by its ID.

Parameters

id

U

The ID of the item to delete.

Returns

Promise<boolean>

A promise that resolves to true if the item was found and marked as deleted, false otherwise.


findById()

findById(id): undefined | T;

Defined in: domain/DomainCollection.ts:186

Finds an item in the collection by its ID.

Parameters

id

U

The unique identifier of the item.

Returns

undefined | T

The found item, or undefined if not found.

Inherited from

UpdatableCollection.findById


forEach()

forEach(callback): void;

Defined in: domain/DomainCollection.ts:244

Executes a provided function once for each item in the collection.

Parameters

callback

(item, index, collection) => void

Function to execute for each item.

Returns

void

Example

collection.forEach((item, idx) => {
console.log(idx, item);
});

Inherited from

UpdatableCollection.forEach


get()

get(index): undefined | T;

Defined in: domain/DomainCollection.ts:205

Gets the item at the specified index.

Parameters

index

number

The zero-based index of the item.

Returns

undefined | T

The item at the given index, or undefined if out of bounds.

Inherited from

UpdatableCollection.get


getItems()

getItems(showDeleted): T[];

Defined in: domain/DeletableCollection.ts:121

Gets items in the collection, optionally filtering by deletion status.

Parameters

showDeleted

TrueFalseOnly = TrueFalseOnly.False

Controls which items are returned:

Returns

T[]

An array of items matching the filter.

Overrides

UpdatableCollection.getItems


map()

map<R>(fn): R[];

Defined in: domain/DomainCollection.ts:254

Creates a new array populated with the results of calling a provided function on every item.

Type Parameters

R

R

Parameters

fn

(item, index, collection) => R

Function that produces an element of the new array.

Returns

R[]

A new array with each element being the result of the callback function.

Inherited from

UpdatableCollection.map


refresh()

refresh(): Promise<void>;

Defined in: domain/DeletableCollection.ts:48

Refreshes the collection by fetching items from the API, including deleted items.

Returns

Promise<void>

A promise that resolves when the items are loaded.

Overrides

UpdatableCollection.refresh


toArray()

toArray(): T[];

Defined in: domain/DomainCollection.ts:263

Returns a shallow copy of all items as a plain array.

Returns

T[]

A new array containing the same items.

Inherited from

UpdatableCollection.toArray


undelete()

undelete(id): Promise<boolean>;

Defined in: domain/DeletableCollection.ts:102

Restores a previously deleted item in the collection by its ID.

Parameters

id

U

The ID of the item to restore.

Returns

Promise<boolean>

A promise that resolves to true if the item was found and restored, false otherwise.


update()

update(update): Promise<null | T>;

Defined in: domain/UpdatableCollection.ts:68

Updates an existing item in the collection.

Parameters

update

T

The updated item.

Returns

Promise<null | T>

A promise that resolves to the updated item, or null if not found.

Inherited from

UpdatableCollection.update


getCollection()

static getCollection<T, U, Self>(this, transform): Self & {
[n: number]: undefined | T;
length: number;
};

Defined in: domain/DomainCollection.ts:83

Static factory to create a proxied, array-like collection instance.

The returned proxy enables:

  • Numeric index access (collection[0])
  • Iteration (for...of)
  • Length property (collection.length)

Type Parameters

T

T extends Id<U>

U

U

Self

Self extends DomainCollection<T, U>

Parameters

this

(transform) => Self

The concrete subclass constructor.

transform

Optional function to transform raw API data into entities.

null | (data) => T

Returns

Self & { [n: number]: undefined | T; length: number; }

A proxied DomainCollection with array-like behavior.

Example

const orgs = Organisations.create();
console.log(orgs.length); // behaves like an array
console.log(orgs[0]); // index access

Inherited from

UpdatableCollection.getCollection