Skip to content

Common components

Common components
SVG 원본 보기
Mermaid 소스
classDiagram
    class Query {
        Binding binding
        Optional_Function_Row_Key keySelector
        Optional_LinkSelection linkSelection
        Request request
        query()
        using()
        scope()
        predicate()
        join()
        relation()
        get()
        gets()
        getsAfter()
        getsBefore()
        stream()
        getCount()
        insert()
        save()
        update()
        delete()
        sql()
    }
    class LinkSelection {
        Text childKey
        Text parentKey
    }
    class Where {
        Borrow_Group group
        Connector pendingConnector
        Borrow_Request request
        predicate()
        and()
        or()
        navigate()
    }
    class Request {
        Optional_Error deferredError
        RequestIR ir
        List_Value params
        parameter()
        attach()
        shape()
    }
    class RequestIR {
        Optional_Column aggregate
        QueryKind kind
        List_Assignment onDuplicate
        Optional_Optimistic optimistic
        I64 parameterCount
        Optional_Raw raw
        QueryNode root
        Text schemaHash
        List_Assignment set
        I32 version
    }
    class QueryNode {
        Projection columns
        Entity entity
        List_GroupKey groupBy
        Optional_Group having
        List_JoinEdge joins
        Optional_Limit limit
        Optional_Group on
        RelationOptions options
        List_Order order
        List_RelationEdge relations
        Optional_ParameterIndex scopeParameter
        Optional_Group where
    }
    class Binding {
        NativeExecutionControl control
        Optional_Executor executor
        resolve()
    }
    class Executor {
        database()
        queryStep()
        streamStep()
        writeStep()
    }
    class Connection {
        Text dsn
        ConnectionOptions options
        connect()
    }
    class Db {
        CompilerTransport compiler
        RuntimeConfig config
        ConnectionResource connection
        PlanCache plans
        StatementCache statements
        transaction()
        queryStep()
        streamStep()
        writeStep()
    }
    class Tx {
        PinnedConnection connection
        Borrow_Db database
        TxState state
        queryStep()
        writeStep()
        commit()
        rollback()
    }
    class Row {
        Binding binding
        Optional_Error deferredError
        OrderedMap_Column_Assignment dirty
        OrderedMap_Column_Value identity
        Bool loaded
        Optional_Value originalVersion
        Projection projection
        Map_Relation_RelatedValue relations
        ValueStore values
        getColumn()
        has()
        setColumn()
        relLoaded()
        using()
        update()
        updateOptimistic()
        delete()
        deleteCascade()
        export()
    }
    class Collection {
        Map_Key_Row items
        List_Key orderedKeys
        put()
        get()
        first()
        len()
        keys()
        entries()
    }
    class Page {
        I64 current
        Collection_Row items
        I64 pages
        I64 per
        I64 total
    }
    class StreamResult {
        I64 count
        StreamState state
    }
    class Batch {
        BatchOptions options
        List_Request requests
        BatchResult result
        batchInsert()
        batchUpsert()
        batchUpdate()
        batchDelete()
    }
    class AESKeyring {
        I32 currentVersion
        OrderedMap_I32_Secret versions
        versions()
        rotateRow()
    }
    class AESRotationSpec {
        List_AESRotationColumn columns
        Column primaryKey
        Table table
        Column versionColumn
    }
    class AESRotationStatus {
        I32 current
        I64 pending
        I64 total
        OrderedMap_I32_I64 versions
    }
    class Compiler {
        compile()
    }
    class CompilerTransport {
        compile()
        metadata()
    }
    class Plan {
        QueryKind kind
        Text schemaHash
        List_Step steps
    }
    class Step {
        Optional_Assemble assemble
        List_BindSlot bindSlots
        I32 id
        Optional_ParentRef parent
        StepRole role
        Text sql
    }
    class Assemble {
        List_ChildAttachment children
        List_OutColumn columns
        Entity entity
    }
    class ExecutionRows {
        Binding binding
        List_Value params
        Plan plan
        OrderedMap_StepId_StepRows steps
        related()
        stepAssemble()
    }
    class Error {
        Optional_NativeError cause
        Text code
        Text message
    }
    Query *-- Request : stores request
    Query *-- Binding : stores binding
    Where --> Request : references request
    Request *-- RequestIR : stores IR
    RequestIR *-- QueryNode : contains root
    QueryNode *-- QueryNode : contains child nodes
    Binding --> Executor : selects executor
    Db ..|> Executor : implements
    Db --> CompilerTransport : compiles plans
    Tx ..|> Executor : implements
    Tx --> Db : uses database
    Row *-- Binding : uses root binding
    Row *-- Collection : contains relations
    Collection o-- Row : contains ordered rows
    Page *-- Collection : contains items
    Compiler --> Plan : returns
    Plan *-- Step : contains ordered steps
    Step *-- Assemble : maps results
    ExecutionRows --> Plan : uses plan
    ExecutionRows *-- Binding : uses binding
    CompilerTransport --> Compiler : calls
    Query --> AESKeyring : uses keys
    Query --> AESRotationSpec : uses generated specification
    Query --> AESRotationStatus : returns status
    Query --> StreamResult : returns stream result
ComponentBehavior and state
QueryStores mutable query state. Loaded results use Row.
LinkSelectionStores parent and child keys until relation or join construction.
WhereValid only during its callback. Does not execute SQL.
Requestattach copies child state and shifts parameter indexes in the copy.
RequestIRContains compiler input without parameter values.
QueryNodeContains the root or child condition tree.
BindingStores an explicit executor. Does not select an ambient transaction.
ExecutorDefines database and pinned transaction execution operations.
ConnectionCreates a Db from one DSN URI. The URI scheme selects the database; compiler internals are hidden from callers.
DbStores connections, plan cache, statement cache, and runtime configuration.
Txcommit or rollback invalidates queries and rows that use the transaction.
RowSeparates loaded identity, values, pending changes, relations, and execution binding.
CollectionA duplicate key replaces its value without changing order. Integer and string keys are distinct.
PageRequires a positive per value. total does not depend on the requested page.
StreamResultReports whether the cursor was exhausted or stopped and how many independently owned rows were delivered.
BatchExecutes homogeneous typed write requests in bounded chunks and one transaction.
AESKeyringStores versioned AES keys and the current write version.
AESRotationSpecContains generated identifiers and codec stages for one AES entity.
AESRotationStatusContains row counts by stored AES key version.
CompilerAccepts RequestIR and returns an immutable Plan. Does not execute SQL.
CompilerTransportSends typed compiler requests and returns typed plans and metadata.
PlanContains cached execution steps and cannot change during execution.
StepContains one SQL statement, bind slots, parent input, and result mapping.
AssembleMaps result columns and relation results to rows.
ExecutionRowsStores the plan, parameters, step results, and root execution binding.
ErrorSeparates failures from empty results and default values.
FromToRelation
QueryRequeststores request
QueryBindingstores binding
WhereRequestreferences request
RequestRequestIRstores IR
RequestIRQueryNodecontains root
QueryNodeQueryNodecontains child nodes
BindingExecutorselects executor
DbExecutorimplements
DbCompilerTransportcompiles plans
TxExecutorimplements
TxDbuses database
RowBindinguses root binding
RowCollectioncontains relations
CollectionRowcontains ordered rows
PageCollectioncontains items
CompilerPlanreturns
PlanStepcontains ordered steps
StepAssemblemaps results
ExecutionRowsPlanuses plan
ExecutionRowsBindinguses binding
CompilerTransportCompilercalls
QueryAESKeyringuses keys
QueryAESRotationSpecuses generated specification
QueryAESRotationStatusreturns status
QueryStreamResultreturns stream result

An underscore in a diagram type name separates nested types. The table defines the exact types.

FieldCommon type
Query.bindingBinding
Query.keySelectorOptional<Function<Row,Key>>
Query.linkSelectionOptional<LinkSelection>
Query.requestRequest
LinkSelection.childKeyText
LinkSelection.parentKeyText
Where.groupBorrow<Group>
Where.pendingConnectorConnector
Where.requestBorrow<Request>
Request.deferredErrorOptional<Error>
Request.irRequestIR
Request.paramsList<Value>
RequestIR.aggregateOptional<Column>
RequestIR.kindQueryKind
RequestIR.onDuplicateList<Assignment>
RequestIR.optimisticOptional<Optimistic>
RequestIR.parameterCountI64
RequestIR.rawOptional<Raw>
RequestIR.rootQueryNode
RequestIR.schemaHashText
RequestIR.setList<Assignment>
RequestIR.versionI32
QueryNode.columnsProjection
QueryNode.entityEntity
QueryNode.groupByList<GroupKey>
QueryNode.havingOptional<Group>
QueryNode.joinsList<JoinEdge>
QueryNode.limitOptional<Limit>
QueryNode.onOptional<Group>
QueryNode.optionsRelationOptions
QueryNode.orderList<Order>
QueryNode.relationsList<RelationEdge>
QueryNode.scopeParameterOptional<ParameterIndex>
QueryNode.whereOptional<Group>
Binding.controlNativeExecutionControl
Binding.executorOptional<Executor>
Connection.dsnText
Connection.optionsConnectionOptions
Db.compilerCompilerTransport
Db.configRuntimeConfig
Db.connectionConnectionResource
Db.plansPlanCache
Db.statementsStatementCache
Tx.connectionPinnedConnection
Tx.databaseBorrow<Db>
Tx.stateTxState
Row.bindingBinding
Row.deferredErrorOptional<Error>
Row.dirtyOrderedMap<Column,Assignment>
Row.identityOrderedMap<Column,Value>
Row.loadedBool
Row.originalVersionOptional<Value>
Row.projectionProjection
Row.relationsMap<Relation,RelatedValue>
Row.valuesValueStore
Collection.itemsMap<Key,Row>
Collection.orderedKeysList<Key>
Page.currentI64
Page.itemsCollection<Row>
Page.pagesI64
Page.perI64
Page.totalI64
StreamResult.countI64
StreamResult.stateStreamState
Batch.optionsBatchOptions
Batch.requestsList<Request>
Batch.resultBatchResult
AESKeyring.currentVersionI32
AESKeyring.versionsOrderedMap<I32,Secret>
AESRotationSpec.columnsList<AESRotationColumn>
AESRotationSpec.primaryKeyColumn
AESRotationSpec.tableTable
AESRotationSpec.versionColumnColumn
AESRotationStatus.currentI32
AESRotationStatus.pendingI64
AESRotationStatus.totalI64
AESRotationStatus.versionsOrderedMap<I32,I64>
Plan.kindQueryKind
Plan.schemaHashText
Plan.stepsList<Step>
Step.assembleOptional<Assemble>
Step.bindSlotsList<BindSlot>
Step.idI32
Step.parentOptional<ParentRef>
Step.roleStepRole
Step.sqlText
Assemble.childrenList<ChildAttachment>
Assemble.columnsList<OutColumn>
Assemble.entityEntity
ExecutionRows.bindingBinding
ExecutionRows.paramsList<Value>
ExecutionRows.planPlan
ExecutionRows.stepsOrderedMap<StepId,StepRows>
Error.causeOptional<NativeError>
Error.codeText
Error.messageText

MIT License · Go / PHP / Rust / TypeScript