[{"data":1,"prerenderedAt":249},["ShallowReactive",2],{"navigation":3,"\u002Fcurrent-limitations":103,"\u002Fcurrent-limitations-surround":246},[4,9,31,87,98],{"title":5,"path":6,"stem":7,"icon":8},"Getting started","\u002Fgetting-started","01.getting-started","i-tabler-rocket",{"title":10,"icon":11,"path":12,"stem":13,"children":14,"page":30},"Concepts","i-tabler-code","\u002Fconcepts","02.concepts",[15,20,25],{"title":16,"path":17,"stem":18,"icon":19},"Architecture","\u002Fconcepts\u002Farchitecture","02.concepts\u002Farchitecture","i-tabler-sitemap",{"title":21,"path":22,"stem":23,"icon":24},"Metadata and registry","\u002Fconcepts\u002Fmetadata-and-registry","02.concepts\u002Fmetadata-and-registry","i-tabler-schema",{"title":26,"path":27,"stem":28,"icon":29},"Query Engine","\u002Fconcepts\u002Fquery-engine","02.concepts\u002Fquery-engine","i-tabler-engine",false,{"title":32,"icon":33,"path":34,"stem":35,"children":36,"page":30},"Guide","i-tabler-arrow-ramp-right","\u002Fguides","03.guides",[37,42,47,52,57,62,67,72,77,82],{"title":38,"path":39,"stem":40,"icon":41},"Audit Log","\u002Fguides\u002Faudit-log","03.guides\u002Faudit-log","i-tabler-history",{"title":43,"path":44,"stem":45,"icon":46},"Cursor pagination","\u002Fguides\u002Fcursor-pagination","03.guides\u002Fcursor-pagination","i-tabler-arrow-bar-to-down",{"title":48,"path":49,"stem":50,"icon":51},"Domain Events","\u002Fguides\u002Fdomain-events","03.guides\u002Fdomain-events","i-tabler-broadcast",{"title":53,"path":54,"stem":55,"icon":56},"Field visibility","\u002Fguides\u002Ffield-visibility","03.guides\u002Ffield-visibility","i-tabler-eye-off",{"title":58,"path":59,"stem":60,"icon":61},"Lifecycle hooks","\u002Fguides\u002Flifecycle-hooks","03.guides\u002Flifecycle-hooks","i-tabler-arrows-split",{"title":63,"path":64,"stem":65,"icon":66},"Production playground","\u002Fguides\u002Fplayground","03.guides\u002Fplayground","i-tabler-flask",{"title":68,"path":69,"stem":70,"icon":71},"Queries and filters","\u002Fguides\u002Fqueries-and-filters","03.guides\u002Fqueries-and-filters","i-tabler-filter",{"title":73,"path":74,"stem":75,"icon":76},"Relations","\u002Fguides\u002Frelations","03.guides\u002Frelations","i-tabler-link",{"title":78,"path":79,"stem":80,"icon":81},"Schema consistency","\u002Fguides\u002Fschema-consistency","03.guides\u002Fschema-consistency","i-tabler-database-search",{"title":83,"path":84,"stem":85,"icon":86},"Validation","\u002Fguides\u002Fvalidation","03.guides\u002Fvalidation","i-tabler-checkup-list",{"title":88,"icon":89,"path":90,"stem":91,"children":92,"page":30},"Adapters","i-tabler-plug","\u002Fadapters","04.adapters",[93],{"title":94,"path":95,"stem":96,"icon":97},"Drizzle adapter","\u002Fadapters\u002Fdrizzle","04.adapters\u002Fdrizzle","i-simple-icons-drizzle",{"title":99,"path":100,"stem":101,"icon":102},"Current limitations","\u002Fcurrent-limitations","05.current-limitations","i-tabler-circle-dashed-x",{"id":104,"title":99,"body":105,"description":239,"extension":240,"links":241,"meta":242,"navigation":243,"path":100,"seo":244,"stem":101,"__hash__":245},"docs\u002F05.current-limitations.md",{"type":106,"value":107,"toc":226},"minimark",[108,112,117,125,129,136,139,142,146,149,159,162,173,177,188,192,195,199,218],[109,110,111],"p",{},"OpenSya Persistence is an early-stage runtime that powers OpenSya and can be\nused in any TypeScript application. Its core execution model is usable, but the\nfollowing boundaries remain intentional.",[113,114,116],"h2",{"id":115},"schema-lifecycle","Schema lifecycle",[109,118,119,120,124],{},"Persistence does not generate or apply migrations. ",[121,122,123],"code",{},"buildTable()"," constructs\nruntime Drizzle tables only. Keep physical schema changes in a migration tool.",[113,126,128],{"id":127},"database-support","Database support",[109,130,131,132,135],{},"Only the Drizzle PostgreSQL adapter is included. Introspection targets the\n",[121,133,134],{},"public"," schema and does not reconstruct foreign keys, relations, defaults,\ncheck constraints or detailed PostgreSQL type parameters.",[113,137,73],{"id":138},"relations",[109,140,141],{},"Population is explicit and direct. Nested paths, relation-specific filtering,\nsorting, pagination and projections are not implemented. Relation metadata is\nnot inferred from PostgreSQL foreign keys.",[113,143,145],{"id":144},"static-query-inputs","Static query inputs",[109,147,148],{},"Registered table names and returned entities are inferred. Filter field names,\noperator values and creation\u002Fupdate inputs are still represented by generic\nquery structures rather than fully table-specific input types.",[109,150,151,154,155,158],{},[121,152,153],{},"json"," columns infer as ",[121,156,157],{},"unknown","; applications must narrow or explicitly type\ntheir domain JSON shape.",[113,160,43],{"id":161},"cursor-pagination",[109,163,164,165,168,169,172],{},"Only forward ",[121,166,167],{},"first","\u002F",[121,170,171],{},"after"," pagination is available. Backward pagination is not\nimplemented, and values used in cursor ordering cannot be null.",[113,174,176],{"id":175},"authorization-and-tenancy","Authorization and tenancy",[109,178,179,180,183,184,187],{},"The engine carries ",[121,181,182],{},"user",", ",[121,185,186],{},"tenantId"," and arbitrary context, but does not yet\nenforce operation policies, row-level authorization or mandatory tenant filters.",[113,189,191],{"id":190},"delivery-semantics","Delivery semantics",[109,193,194],{},"The Domain Event outbox provides at-least-once delivery. Consumers must be\nidempotent. Persistence supplies the processor contract but no Kafka, RabbitMQ,\nRedis or webhook transport.",[113,196,198],{"id":197},"hooks-and-validation","Hooks and validation",[200,201,202,206,209,212,215],"ul",{},[203,204,205],"li",{},"reads have no lifecycle hooks;",[203,207,208],{},"after-delete hooks do not receive deleted entities;",[203,210,211],{},"update-many transforms one patch and runs after-update per returned entity;",[203,213,214],{},"partial updates do not rediscover invalid untouched fields;",[203,216,217],{},"application validators do not replace database constraints for concurrent\ninvariants.",[219,220,223],"callout",{"color":221,"icon":66,"variant":222},"warning","subtle",[109,224,225],{},"Review the changelog before upgrading and run the production playground against\nPostgreSQL for every release candidate.",{"title":227,"searchDepth":228,"depth":229,"links":230},"",1,2,[231,232,233,234,235,236,237,238],{"id":115,"depth":229,"text":116},{"id":127,"depth":229,"text":128},{"id":138,"depth":229,"text":73},{"id":144,"depth":229,"text":145},{"id":161,"depth":229,"text":43},{"id":175,"depth":229,"text":176},{"id":190,"depth":229,"text":191},{"id":197,"depth":229,"text":198},"The current technical boundaries of OpenSya Persistence.","md",null,{},{"icon":102},{"title":99,"description":239},"QfC3MsyA1yfx7dDQTSH3Un159w9R9OPMsCrDm6Srdqc",[247,241],{"title":94,"path":95,"stem":96,"description":248,"icon":97,"children":-1},"PostgreSQL query execution, runtime table construction, transactions, and schema introspection.",1783784235117]