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
ITreeStore<TNode,TCreate,TUpdate>
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
protectedreadonlydb:NodePgDatabase<Record<string,unknown>> &object
Defined in: packages/chaingraph-trpc/server/stores/hierarchy/TreeStoreBase.ts:59
Type Declaration
$client
$client:
Pool
table
abstractprotectedreadonlytable:PgTable
Defined in: packages/chaingraph-trpc/server/stores/hierarchy/TreeStoreBase.ts:47
The Drizzle table definition (must be provided by subclass)
Methods
create()
abstractcreate(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
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
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
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
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
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
getOrderByClause()
protectedgetOrderByClause(orderBy):SQL<unknown>
Defined in: packages/chaingraph-trpc/server/stores/hierarchy/TreeStoreBase.ts:294
Helper to build order by clause
Parameters
orderBy
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
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
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
mapRowToNode()
abstractprotectedmapRowToNode(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
Returns
Promise<TNode>
Implementation of
prepareCreateInput()
abstractprotectedprepareCreateInput(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()
abstractupdate(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
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>