Skip to content

ChainGraph API Documentation / @badaitech/chaingraph-trpc / server / TreeStoreBase

Abstract Class: TreeStoreBase<TRow, TNode, TCreate, TUpdate> ​

Defined in: packages/chaingraph-trpc/server/stores/hierarchy/TreeStoreBase.ts:38

Abstract base class for all tree-based storage implementations Provides shared implementation of tree operations using PostgreSQL

Entity-specific stores extend this class and provide:

  • Table definition
  • Row to domain model mapping
  • Entity-specific custom methods

Extended by ​

Type Parameters ​

TRow ​

TRow

TNode ​

TNode extends ITreeNode

TCreate ​

TCreate extends ICreateTreeNodeInput

TUpdate ​

TUpdate extends IUpdateTreeNodeInput

Implements ​

Constructors ​

Constructor ​

new TreeStoreBase<TRow, TNode, TCreate, TUpdate>(db): TreeStoreBase<TRow, TNode, TCreate, TUpdate>

Defined in: packages/chaingraph-trpc/server/stores/hierarchy/TreeStoreBase.ts:59

Parameters ​

db ​

NodePgDatabase<Record<string, unknown>> & object

Returns ​

TreeStoreBase<TRow, TNode, TCreate, TUpdate>

Properties ​

db ​

protected readonly db: NodePgDatabase<Record<string, unknown>> & object

Defined in: packages/chaingraph-trpc/server/stores/hierarchy/TreeStoreBase.ts:59

Type Declaration ​

$client ​

$client: Pool


table ​

abstract protected readonly table: PgTable

Defined in: packages/chaingraph-trpc/server/stores/hierarchy/TreeStoreBase.ts:47

The Drizzle table definition (must be provided by subclass)

Methods ​

create() ​

abstract create(input): Promise<TNode>

Defined in: packages/chaingraph-trpc/server/stores/hierarchy/TreeStoreBase.ts:63

Create a new node in the tree

Parameters ​

input ​

TCreate

Returns ​

Promise<TNode>

Implementation of ​

ITreeStore.create


delete() ​

delete(id): Promise<boolean>

Defined in: packages/chaingraph-trpc/server/stores/hierarchy/TreeStoreBase.ts:81

Delete a node from the tree Implementation should handle cascade strategy

Parameters ​

id ​

string

Returns ​

Promise<boolean>

Implementation of ​

ITreeStore.delete


get() ​

get(id): Promise<TNode | null>

Defined in: packages/chaingraph-trpc/server/stores/hierarchy/TreeStoreBase.ts:65

Get a single node by ID

Parameters ​

id ​

string

Returns ​

Promise<TNode | null>

Implementation of ​

ITreeStore.get


getAncestors() ​

getAncestors(nodeId): Promise<TNode[]>

Defined in: packages/chaingraph-trpc/server/stores/hierarchy/TreeStoreBase.ts:185

Get all ancestor nodes of a node (path to root)

Parameters ​

nodeId ​

string

Starting node ID

Returns ​

Promise<TNode[]>

Implementation of ​

ITreeStore.getAncestors


getDescendants() ​

getDescendants(rootId, ownerId): Promise<TNode[]>

Defined in: packages/chaingraph-trpc/server/stores/hierarchy/TreeStoreBase.ts:163

Get all descendant nodes of a root node (recursive)

Parameters ​

rootId ​

string

Root node ID

ownerId ​

string

Owner to verify access

Returns ​

Promise<TNode[]>

Implementation of ​

ITreeStore.getDescendants


getMaxOrder() ​

getMaxOrder(parentId, ownerId): Promise<number>

Defined in: packages/chaingraph-trpc/server/stores/hierarchy/TreeStoreBase.ts:204

Get maximum order value in a parent for appending

Parameters ​

parentId ​

Parent node ID (null = root level)

string | null

ownerId ​

string

Owner ID to filter by

Returns ​

Promise<number>

Implementation of ​

ITreeStore.getMaxOrder


getOrderByClause() ​

protected getOrderByClause(orderBy): SQL<unknown>

Defined in: packages/chaingraph-trpc/server/stores/hierarchy/TreeStoreBase.ts:294

Helper to build order by clause

Parameters ​

orderBy ​

ListOrderBy

Returns ​

SQL<unknown>


hasAccess() ​

hasAccess(nodeId, userId): Promise<boolean>

Defined in: packages/chaingraph-trpc/server/stores/hierarchy/TreeStoreBase.ts:223

Check if user has access to a node

Parameters ​

nodeId ​

string

Node ID to check

userId ​

string

User ID to verify

Returns ​

Promise<boolean>

Implementation of ​

ITreeStore.hasAccess


list() ​

list(ownerId, rootId?, limit?): Promise<TNode[]>

Defined in: packages/chaingraph-trpc/server/stores/hierarchy/TreeStoreBase.ts:89

List all nodes for a user

Parameters ​

ownerId ​

string

User ID to filter by

rootId? ​

Optional root node to filter descendants

string | null

limit? ​

number = 1000

Maximum number of results

Returns ​

Promise<TNode[]>

Implementation of ​

ITreeStore.list


listChildren() ​

listChildren(parentId): Promise<TNode[]>

Defined in: packages/chaingraph-trpc/server/stores/hierarchy/TreeStoreBase.ts:112

List direct children of a parent node

Parameters ​

parentId ​

Parent node ID (null = root level)

string | null

Returns ​

Promise<TNode[]>

Implementation of ​

ITreeStore.listChildren


mapRowToNode() ​

abstract protected mapRowToNode(row): TNode

Defined in: packages/chaingraph-trpc/server/stores/hierarchy/TreeStoreBase.ts:52

Map database row to domain model (must be implemented by subclass)

Parameters ​

row ​

TRow

Returns ​

TNode


move() ​

move(input): Promise<TNode>

Defined in: packages/chaingraph-trpc/server/stores/hierarchy/TreeStoreBase.ts:128

Move a node to a new parent and/or order Must prevent circular references

Parameters ​

input ​

IMoveTreeNodeInput

Returns ​

Promise<TNode>

Implementation of ​

ITreeStore.move


prepareCreateInput() ​

abstract protected prepareCreateInput(input): Record<string, any>

Defined in: packages/chaingraph-trpc/server/stores/hierarchy/TreeStoreBase.ts:57

Prepare create input for database insertion (can be overridden)

Parameters ​

input ​

TCreate

Returns ​

Record<string, any>


update() ​

abstract update(input): Promise<TNode>

Defined in: packages/chaingraph-trpc/server/stores/hierarchy/TreeStoreBase.ts:79

Update node metadata (name, description, color, etc.) Does NOT move the node in the tree

Parameters ​

input ​

TUpdate

Returns ​

Promise<TNode>

Implementation of ​

ITreeStore.update


wouldCreateCircularRef() ​

wouldCreateCircularRef(sourceId, targetParentId): Promise<boolean>

Defined in: packages/chaingraph-trpc/server/stores/hierarchy/TreeStoreBase.ts:232

Check if moving a node would create a circular reference

Parameters ​

sourceId ​

string

Node being moved

targetParentId ​

string

Proposed new parent

Returns ​

Promise<boolean>

Implementation of ​

ITreeStore.wouldCreateCircularRef

Licensed under BUSL-1.1