%%{init: {'themeVariables': { 'fontSize': '12px'}}}%%
graph TD
    classDef path fill:#eee,stroke:#000,color:#000
    classDef plan fill:#fff,stroke-width:1px,color:#000
    classDef itemplan fill:#fff,stroke-width:2px,color:#000
    classDef unbatchedplan fill:#dff,stroke-width:1px,color:#000
    classDef sideeffectplan fill:#fcc,stroke-width:2px,color:#000
    classDef bucket fill:#f6f6f6,color:#000,stroke-width:2px,text-align:left

    subgraph "Buckets for queries/interfaces-single-table/basics"
    Bucket0("Bucket 0 (root)<br /><br />1: <br />ᐳ: 6, 8, 9, 10<br />2: PgSelect[7]<br />3: PgSelectRows[11]"):::bucket
    Bucket1("Bucket 1 (listItem)<br />Deps: 10, 6<br /><br />ROOT __Item{1}ᐸ11ᐳ[12]"):::bucket
    Bucket2("Bucket 2 (nullableBoundary)<br />Deps: 13, 10, 6<br /><br />ROOT PgSelectSingle{1}ᐸpeopleᐳ[13]<br />1: <br />ᐳ: 14, 15<br />2: PgSelect[16]<br />3: PgSelectRows[20]"):::bucket
    Bucket3("Bucket 3 (listItem)<br /><br />ROOT __Item{3}ᐸ20ᐳ[21]"):::bucket
    Bucket4("Bucket 4 (polymorphic)<br />Deps: 24, 22, 25, 23, 27, 28, 29, 30, 31, 32"):::bucket
    end
    Bucket0 --> Bucket1
    Bucket1 --> Bucket2
    Bucket2 --> Bucket3
    Bucket3 --> Bucket4

    %% plan dependencies
    PgSelect7[["PgSelect[7∈0] ➊<br />ᐸpeopleᐳ"]]:::plan
    Object10{{"Object[10∈0] ➊<br />ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
    Object10 --> PgSelect7
    Access8{{"Access[8∈0] ➊<br />ᐸ2.pgSettingsᐳ"}}:::plan
    Access9{{"Access[9∈0] ➊<br />ᐸ2.withPgClientᐳ"}}:::plan
    Access8 & Access9 --> Object10
    __Value2["__Value[2∈0] ➊<br />ᐸcontextᐳ"]:::plan
    __Value2 --> Access8
    __Value2 --> Access9
    PgSelectRows11[["PgSelectRows[11∈0] ➊"]]:::plan
    PgSelect7 --> PgSelectRows11
    __Value4["__Value[4∈0] ➊<br />ᐸrootValueᐳ"]:::plan
    __Item12[/"__Item[12∈1]<br />ᐸ11ᐳ"\]:::itemplan
    PgSelectRows11 ==> __Item12
    PgSelectSingle13{{"PgSelectSingle[13∈1]<br />ᐸpeopleᐳ"}}:::plan
    __Item12 --> PgSelectSingle13
    PgSelect16[["PgSelect[16∈2]<br />ᐸsingle_table_itemsᐳ"]]:::plan
    PgClassExpression15{{"PgClassExpression[15∈2]<br />ᐸ__people__.”person_id”ᐳ"}}:::plan
    Object10 & PgClassExpression15 --> PgSelect16
    PgClassExpression14{{"PgClassExpression[14∈2]<br />ᐸ__people__.”username”ᐳ"}}:::plan
    PgSelectSingle13 --> PgClassExpression14
    PgSelectSingle13 --> PgClassExpression15
    PgSelectRows20[["PgSelectRows[20∈2]"]]:::plan
    PgSelect16 --> PgSelectRows20
    __Item21[/"__Item[21∈3]<br />ᐸ20ᐳ"\]:::itemplan
    PgSelectRows20 ==> __Item21
    PgSelectSingle22{{"PgSelectSingle[22∈3]<br />ᐸsingle_table_itemsᐳ"}}:::plan
    __Item21 --> PgSelectSingle22
    PgClassExpression23{{"PgClassExpression[23∈3]<br />ᐸ__single_t...s__.”type”ᐳ"}}:::plan
    PgSelectSingle22 --> PgClassExpression23
    Lambda24{{"Lambda[24∈3]"}}:::plan
    PgClassExpression23 --> Lambda24
    PgClassExpression25{{"PgClassExpression[25∈3]<br />ᐸ__single_t...ems__.”id”ᐳ"}}:::plan
    PgSelectSingle22 --> PgClassExpression25
    PgClassExpression27{{"PgClassExpression[27∈3]<br />ᐸ__single_t...__.”type2”ᐳ"}}:::plan
    PgSelectSingle22 --> PgClassExpression27
    PgClassExpression28{{"PgClassExpression[28∈3]<br />ᐸ__single_t...”position”ᐳ"}}:::plan
    PgSelectSingle22 --> PgClassExpression28
    PgClassExpression29{{"PgClassExpression[29∈3]<br />ᐸ__single_t...reated_at”ᐳ"}}:::plan
    PgSelectSingle22 --> PgClassExpression29
    PgClassExpression30{{"PgClassExpression[30∈3]<br />ᐸ__single_t...pdated_at”ᐳ"}}:::plan
    PgSelectSingle22 --> PgClassExpression30
    PgClassExpression31{{"PgClassExpression[31∈3]<br />ᐸ__single_t..._archived”ᐳ"}}:::plan
    PgSelectSingle22 --> PgClassExpression31
    PgClassExpression32{{"PgClassExpression[32∈3]<br />ᐸ__single_t...chived_at”ᐳ"}}:::plan
    PgSelectSingle22 --> PgClassExpression32

    %% define steps
    classDef bucket0 stroke:#696969
    class Bucket0,__Value2,__Value4,PgSelect7,Access8,Access9,Object10,PgSelectRows11 bucket0
    classDef bucket1 stroke:#00bfff
    class Bucket1,__Item12,PgSelectSingle13 bucket1
    classDef bucket2 stroke:#7f007f
    class Bucket2,PgClassExpression14,PgClassExpression15,PgSelect16,PgSelectRows20 bucket2
    classDef bucket3 stroke:#ffa500
    class Bucket3,__Item21,PgSelectSingle22,PgClassExpression23,Lambda24,PgClassExpression25,PgClassExpression27,PgClassExpression28,PgClassExpression29,PgClassExpression30,PgClassExpression31,PgClassExpression32 bucket3
    classDef bucket4 stroke:#0000ff
    class Bucket4 bucket4

