Skip to content

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 ​

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 ​

TreeStoreBase.constructor

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

Inherited from ​

TreeStoreBase.db


table ​

protected readonly table: 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 ​

TreeStoreBase.table

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 ​

CreateFolderInput

Returns ​

Promise<FlowFolder>

Overrides ​

TreeStoreBase.create


createFolder() ​

createFolder(input): Promise<FlowFolder>

Defined in: packages/chaingraph-trpc/server/stores/folderStore/dbFolderStore.ts:105

Creates a new folder

Parameters ​

input ​

CreateFolderInput

Returns ​

Promise<FlowFolder>

Implementation of ​

IFolderStore.createFolder


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 ​

TreeStoreBase.delete


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 ​

IFolderStore.deleteFolder


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 ​

TreeStoreBase.get


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 ​

TreeStoreBase.getAncestors


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 ​

TreeStoreBase.getDescendants


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 ​

IFolderStore.getFolder


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 ​

TreeStoreBase.getMaxOrder


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() ​

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>

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 ​

IFolderStore.hasAccess

Inherited from ​

TreeStoreBase.hasAccess


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 ​

TreeStoreBase.list


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 ​

IFolderStore.listChildFolders


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 ​

TreeStoreBase.listChildren


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 ​

IFolderStore.listFolders


mapRowToNode() ​

protected mapRowToNode(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 ​

FlowFolder

Overrides ​

TreeStoreBase.mapRowToNode


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 ​

IMoveTreeNodeInput

Returns ​

Promise<FlowFolder>

Inherited from ​

TreeStoreBase.move


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 ​

MoveFolderInput

Returns ​

Promise<FlowFolder>

Implementation of ​

IFolderStore.moveFolder


prepareCreateInput() ​

protected prepareCreateInput(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 ​

CreateFolderInput

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 ​

UpdateFolderInput

Returns ​

Promise<FlowFolder>

Overrides ​

TreeStoreBase.update


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 ​

UpdateFolderInput

Returns ​

Promise<FlowFolder>

Implementation of ​

IFolderStore.updateFolder


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>

Inherited from ​

TreeStoreBase.wouldCreateCircularRef

Licensed under BUSL-1.1