[{"data":1,"prerenderedAt":222},["ShallowReactive",2],{"navigation":3,"index":103},[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":105,"body":106,"description":215,"extension":216,"meta":217,"navigation":30,"path":218,"seo":219,"stem":220,"__hash__":221},"landing\u002Findex.md","OpenSya Persistence",{"type":107,"value":108,"toc":208},"minimark",[109,113,117,120,144,149,170,174,199],[110,111,105],"h1",{"id":112},"opensya-persistence",[114,115,116],"p",{},"The persistence engine behind OpenSya, available to any TypeScript application.",[114,118,119],{},"Declare the domain once. Persistence executes validation, relations, lifecycle\nhooks, transactions, audit trails and domain events consistently, while the\ndatabase remains behind an adapter.",[121,122,126,134,139],"u-page-grid",{"className":123},[124,125],"gap-3","mt-16",[127,128],"u-page-card",{"description":129,"icon":8,"title":5,"to":6,":spotlight":130,":ui":131,"className":132},"Define a typed table and execute your first PostgreSQL query.","true","{\"leading\":\"h-38 flex items-start\"}",[133],"shadow-lg",[127,135],{"description":136,"icon":24,"title":137,"to":22,":spotlight":130,":ui":131,"className":138},"Model tables once and infer every returned entity automatically.","Metadata and inference",[133],[127,140],{"description":141,"icon":142,"title":26,"to":27,":spotlight":130,":ui":131,"className":143},"Read and mutate data through the validated execution runtime.","i-tabler-database",[133],[145,146,148],"h2",{"id":147},"runtime-features","Runtime features",[121,150,152,155,158,161,164,167],{"className":151},[124],[127,153],{"description":154,"icon":86,"title":83,"to":84},"Structural, field and cross-field rules.",[127,156],{"description":157,"icon":76,"title":73,"to":74},"Explicit batched population for every cardinality.",[127,159],{"description":160,"icon":56,"title":53,"to":54},"Keep secrets and contextual fields out of results.",[127,162],{"description":163,"icon":41,"title":38,"to":39},"Record transactional before\u002Fafter snapshots and changes.",[127,165],{"description":166,"icon":51,"title":48,"to":49},"Persist typed events atomically and publish them safely.",[127,168],{"description":169,"icon":46,"title":43,"to":44},"Stable keyset pagination without OFFSET.",[145,171,173],{"id":172},"what-it-owns","What it owns",[175,176,177,181,184,187,190,193,196],"ul",{},[178,179,180],"li",{},"a typed metadata registry and schema validation;",[178,182,183],{},"a database-independent query model;",[178,185,186],{},"inferred result types from table metadata;",[178,188,189],{},"safe, transactional mutations and lifecycle hooks;",[178,191,192],{},"explicit relation population and result serialization;",[178,194,195],{},"transactional audit logs and domain-event outboxes;",[178,197,198],{},"PostgreSQL execution and introspection through Drizzle.",[200,201,205],"callout",{"color":202,"icon":203,"variant":204},"neutral","i-tabler-info-circle","subtle",[114,206,207],{},"Persistence does not generate migrations and does not replace Drizzle. It gives\nOpenSya one runtime for executing domain rules around database operations.",{"title":209,"searchDepth":210,"depth":211,"links":212},"",1,2,[213,214],{"id":147,"depth":211,"text":148},{"id":172,"depth":211,"text":173},"A metadata-driven persistence engine for TypeScript applications, powering OpenSya.","md",{},"\u002F",{"title":105,"description":215},"index","5gL2s9QOOtLYxfnGkN9ibTxp5OSt9fBc4i9_qk7gUv4",1783784234668]