ChainGraph API Documentation / @badaitech/chaingraph-trpc / server / DBFolderStore
Class: DBFolderStore
Defined in: packages/chaingraph-trpc/server/stores/folderStore/dbFolderStore.ts:27
Database implementation of folder storage Extends TreeStoreBase to inherit generic tree operations
Extends
TreeStoreBase<FlowFolderRow,FlowFolder,CreateFolderInput,UpdateFolderInput>
Implements
Constructors
Constructor
new DBFolderStore(
db):DBFolderStore
Defined in: packages/chaingraph-trpc/server/stores/folderStore/dbFolderStore.ts:32
Parameters
db
NodePgDatabase<Record<string, unknown>> & object
Returns
DBFolderStore
Overrides
Properties
db
protectedreadonlydb:NodePgDatabase<Record<string,unknown>> &object
Defined in: packages/chaingraph-trpc/server/stores/hierarchy/TreeStoreBase.ts:59
Type Declaration
$client
$client:
Pool
Inherited from
table
protectedreadonlytable:PgTableWithColumns<{columns: {color:PgColumn<{baseColumn:never;columnType:"PgText";data:string;dataType:"string";driverParam:string;enumValues: [string,...string[]];generated:undefined;hasDefault:false;hasRuntimeDefault:false;identity:undefined;isAutoincrement:false;isPrimaryKey:false;name:"color";notNull:false;tableName:"flow_folders"; }, { }, { }>;createdAt:PgColumn<{baseColumn:never;columnType:"PgTimestamp";data:Date;dataType:"date";driverParam:string;enumValues:undefined;generated:undefined;hasDefault:true;hasRuntimeDefault:false;identity:undefined;isAutoincrement:false;isPrimaryKey:false;name:"created_at";notNull:true;tableName:"flow_folders"; }, { }, { }>;description:PgColumn<{baseColumn:never;columnType:"PgText";data:string;dataType:"string";driverParam:string;enumValues: [string,...string[]];generated:undefined;hasDefault:false;hasRuntimeDefault:false;identity:undefined;isAutoincrement:false;isPrimaryKey:false;name:"description";notNull:false;tableName:"flow_folders"; }, { }, { }>;id:PgColumn<{baseColumn:never;columnType:"PgText";data:string;dataType:"string";driverParam:string;enumValues: [string,...string[]];generated:undefined;hasDefault:false;hasRuntimeDefault:false;identity:undefined;isAutoincrement:false;isPrimaryKey:true;name:"id";notNull:true;tableName:"flow_folders"; }, { }, { }>;name:PgColumn<{baseColumn:never;columnType:"PgText";data:string;dataType:"string";driverParam:string;enumValues: [string,...string[]];generated:undefined;hasDefault:false;hasRuntimeDefault:false;identity:undefined;isAutoincrement:false;isPrimaryKey:false;name:"name";notNull:true;tableName:"flow_folders"; }, { }, { }>;order:PgColumn<{baseColumn:never;columnType:"PgInteger";data:number;dataType:"number";driverParam:string|number;enumValues:undefined;generated:undefined;hasDefault:true;hasRuntimeDefault:false;identity:undefined;isAutoincrement:false;isPrimaryKey:false;name:"order";notNull:true;tableName:"flow_folders"; }, { }, { }>;ownerId:PgColumn<{baseColumn:never;columnType:"PgText";data:string;dataType:"string";driverParam:string;enumValues: [string,...string[]];generated:undefined;hasDefault:false;hasRuntimeDefault:false;identity:undefined;isAutoincrement:false;isPrimaryKey:false;name:"owner_id";notNull:true;tableName:"flow_folders"; }, { }, { }>;parentFolderId:PgColumn<{baseColumn:never;columnType:"PgText";data:string;dataType:"string";driverParam:string;enumValues: [string,...string[]];generated:undefined;hasDefault:false;hasRuntimeDefault:false;identity:undefined;isAutoincrement:false;isPrimaryKey:false;name:"parent_folder_id";notNull:false;tableName:"flow_folders"; }, { }, { }>;updatedAt:PgColumn<{baseColumn:never;columnType:"PgTimestamp";data:Date;dataType:"date";driverParam:string;enumValues:undefined;generated:undefined;hasDefault:true;hasRuntimeDefault:false;identity:undefined;isAutoincrement:false;isPrimaryKey:false;name:"updated_at";notNull:true;tableName:"flow_folders"; }, { }, { }>; };dialect:"pg";name:"flow_folders";schema:undefined; }> =flowFoldersTable
Defined in: packages/chaingraph-trpc/server/stores/folderStore/dbFolderStore.ts:30
The Drizzle table definition (must be provided by subclass)
Overrides
Methods
create()
create(
input):Promise<FlowFolder>
Defined in: packages/chaingraph-trpc/server/stores/folderStore/dbFolderStore.ts:66
Create a new node in the tree
Parameters
input
Returns
Promise<FlowFolder>
Overrides
createFolder()
createFolder(
input):Promise<FlowFolder>
Defined in: packages/chaingraph-trpc/server/stores/folderStore/dbFolderStore.ts:105
Creates a new folder
Parameters
input
Returns
Promise<FlowFolder>
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>
Inherited from
deleteFolder()
deleteFolder(
folderId):Promise<boolean>
Defined in: packages/chaingraph-trpc/server/stores/folderStore/dbFolderStore.ts:246
Deletes a folder (must be empty unless using cascade)
Parameters
folderId
string
Returns
Promise<boolean>
Implementation of
get()
get(
id):Promise<FlowFolder|null>
Defined in: packages/chaingraph-trpc/server/stores/hierarchy/TreeStoreBase.ts:65
Get a single node by ID
Parameters
id
string
Returns
Promise<FlowFolder | null>
Inherited from
getAncestors()
getAncestors(
nodeId):Promise<FlowFolder[]>
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<FlowFolder[]>
Inherited from
getDescendants()
getDescendants(
rootId,ownerId):Promise<FlowFolder[]>
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<FlowFolder[]>
Inherited from
getFolder()
getFolder(
folderId):Promise<FlowFolder|null>
Defined in: packages/chaingraph-trpc/server/stores/folderStore/dbFolderStore.ts:109
Retrieves a folder by ID
Parameters
folderId
string
Returns
Promise<FlowFolder | null>
Implementation of
getMaxFlowOrderInFolder()
getMaxFlowOrderInFolder(
folderId,ownerId):Promise<number>
Defined in: packages/chaingraph-trpc/server/stores/folderStore/dbFolderStore.ts:279
Gets the maximum order value for flows in a folder Used for appending new flows
Parameters
folderId
string | null
ownerId
string
Returns
Promise<number>
Implementation of
IFolderStore.getMaxFlowOrderInFolder
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>
Inherited from
getMaxOrderInParent()
getMaxOrderInParent(
parentFolderId,ownerId):Promise<number>
Defined in: packages/chaingraph-trpc/server/stores/folderStore/dbFolderStore.ts:250
Gets the maximum order value in a parent folder (for folders) Used for appending new folders
Parameters
parentFolderId
string | null
ownerId
string
Returns
Promise<number>
Implementation of
IFolderStore.getMaxOrderInParent
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>
Inherited from
TreeStoreBase.getOrderByClause
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
Inherited from
list()
list(
ownerId,rootId?,limit?):Promise<FlowFolder[]>
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<FlowFolder[]>
Inherited from
listChildFolders()
listChildFolders(
parentFolderId):Promise<FlowFolder[]>
Defined in: packages/chaingraph-trpc/server/stores/folderStore/dbFolderStore.ts:185
Lists child folders of a parent
Parameters
parentFolderId
string | null
Returns
Promise<FlowFolder[]>
Implementation of
listChildren()
listChildren(
parentId):Promise<FlowFolder[]>
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<FlowFolder[]>
Inherited from
listFlowsInFolder()
listFlowsInFolder(
folderId):Promise<FlowMetadata[]>
Defined in: packages/chaingraph-trpc/server/stores/folderStore/dbFolderStore.ts:298
Lists flows in a specific folder (direct children only)
Parameters
folderId
string | null
Returns
Promise<FlowMetadata[]>
Implementation of
IFolderStore.listFlowsInFolder
listFlowsInFolderSubtree()
listFlowsInFolderSubtree(
folderId,ownerId):Promise<FlowMetadata[]>
Defined in: packages/chaingraph-trpc/server/stores/folderStore/dbFolderStore.ts:324
Lists flows in a folder and all its descendants This enables namespace/workspace isolation
Parameters
folderId
string | null
ownerId
string
Returns
Promise<FlowMetadata[]>
Implementation of
IFolderStore.listFlowsInFolderSubtree
listFolders()
listFolders(
ownerId,orderBy,limit,rootFolderId?):Promise<FlowFolder[]>
Defined in: packages/chaingraph-trpc/server/stores/folderStore/dbFolderStore.ts:113
Lists all folders for a user
Parameters
ownerId
string
orderBy
string = 'createdAtDesc'
limit
number = 1000
rootFolderId?
Optional root folder to filter descendants only
string | null
Returns
Promise<FlowFolder[]>
Implementation of
mapRowToNode()
protectedmapRowToNode(row):FlowFolder
Defined in: packages/chaingraph-trpc/server/stores/folderStore/dbFolderStore.ts:38
Map database row to domain model (must be implemented by subclass)
Parameters
row
color
string | null
createdAt
Date
description
string | null
id
string
name
string
order
number
ownerId
string
parentFolderId
string | null
updatedAt
Date
Returns
Overrides
move()
move(
input):Promise<FlowFolder>
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<FlowFolder>
Inherited from
moveFolder()
moveFolder(
input):Promise<FlowFolder>
Defined in: packages/chaingraph-trpc/server/stores/folderStore/dbFolderStore.ts:204
Moves a folder to a new parent and order
Parameters
input
Returns
Promise<FlowFolder>
Implementation of
prepareCreateInput()
protectedprepareCreateInput(input):Record<string,any>
Defined in: packages/chaingraph-trpc/server/stores/folderStore/dbFolderStore.ts:52
Prepare create input for database insertion (can be overridden)
Parameters
input
Returns
Record<string, any>
Overrides
TreeStoreBase.prepareCreateInput
update()
update(
input):Promise<FlowFolder>
Defined in: packages/chaingraph-trpc/server/stores/folderStore/dbFolderStore.ts:76
Update node metadata (name, description, color, etc.) Does NOT move the node in the tree
Parameters
input
Returns
Promise<FlowFolder>
Overrides
updateFolder()
updateFolder(
input):Promise<FlowFolder>
Defined in: packages/chaingraph-trpc/server/stores/folderStore/dbFolderStore.ts:200
Updates a folder's metadata (name, description, color)
Parameters
input
Returns
Promise<FlowFolder>
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>