[{"data":1,"prerenderedAt":280},["ShallowReactive",2],{"navigation":3,"\u002Fguides\u002Fplayground":103,"\u002Fguides\u002Fplayground-surround":275},[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":63,"body":105,"description":268,"extension":269,"links":270,"meta":271,"navigation":272,"path":64,"seo":273,"stem":65,"__hash__":274},"docs\u002F03.guides\u002Fplayground.md",{"type":106,"value":107,"toc":263},"minimark",[108,121,126,172,175,179,199,203,256,259],[109,110,111,112,116,117,120],"p",{},"The repository contains a private ",[113,114,115],"code",{},"playground"," workspace that imports the built\n",[113,118,119],{},"@opensya\u002Fpersistence"," package through its public exports.",[122,123,125],"h2",{"id":124},"start-postgresql","Start PostgreSQL",[127,128,133],"pre",{"className":129,"code":130,"language":131,"meta":132,"style":132},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","docker compose -f playground\u002Fcompose.yaml up -d\ncp playground\u002F.env.example playground\u002F.env\n","bash","",[113,134,135,160],{"__ignoreMap":132},[136,137,140,144,148,151,154,157],"span",{"class":138,"line":139},"line",1,[136,141,143],{"class":142},"sBMFI","docker",[136,145,147],{"class":146},"sfazB"," compose",[136,149,150],{"class":146}," -f",[136,152,153],{"class":146}," playground\u002Fcompose.yaml",[136,155,156],{"class":146}," up",[136,158,159],{"class":146}," -d\n",[136,161,163,166,169],{"class":138,"line":162},2,[136,164,165],{"class":142},"cp",[136,167,168],{"class":146}," playground\u002F.env.example",[136,170,171],{"class":146}," playground\u002F.env\n",[109,173,174],{},"Never point the playground at a shared, staging or production database. Each\nscenario drops and recreates its own tables.",[122,176,178],{"id":177},"run-everything","Run everything",[127,180,182],{"className":129,"code":181,"language":131,"meta":132,"style":132},"pnpm install\npnpm playground\n",[113,183,184,192],{"__ignoreMap":132},[136,185,186,189],{"class":138,"line":139},[136,187,188],{"class":142},"pnpm",[136,190,191],{"class":146}," install\n",[136,193,194,196],{"class":138,"line":162},[136,195,188],{"class":142},[136,197,198],{"class":146}," playground\n",[122,200,202],{"id":201},"run-one-scenario","Run one scenario",[127,204,206],{"className":129,"code":205,"language":131,"meta":132,"style":132},"pnpm --dir playground test:crud\npnpm --dir playground test:relations\npnpm --dir playground test:audit-events\npnpm --dir playground test:pagination\n",[113,207,208,221,232,244],{"__ignoreMap":132},[136,209,210,212,215,218],{"class":138,"line":139},[136,211,188],{"class":142},[136,213,214],{"class":146}," --dir",[136,216,217],{"class":146}," playground",[136,219,220],{"class":146}," test:crud\n",[136,222,223,225,227,229],{"class":138,"line":162},[136,224,188],{"class":142},[136,226,214],{"class":146},[136,228,217],{"class":146},[136,230,231],{"class":146}," test:relations\n",[136,233,235,237,239,241],{"class":138,"line":234},3,[136,236,188],{"class":142},[136,238,214],{"class":146},[136,240,217],{"class":146},[136,242,243],{"class":146}," test:audit-events\n",[136,245,247,249,251,253],{"class":138,"line":246},4,[136,248,188],{"class":142},[136,250,214],{"class":146},[136,252,217],{"class":146},[136,254,255],{"class":146}," test:pagination\n",[109,257,258],{},"The initial scenarios cover CRUD, defaults, validation, hooks, safe mutations,\nrelations, recursive serialization, audit, outbox publication and cursor\npagination.",[260,261,262],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":132,"searchDepth":139,"depth":162,"links":264},[265,266,267],{"id":124,"depth":162,"text":125},{"id":177,"depth":162,"text":178},{"id":201,"depth":162,"text":202},"Exercise the built package against an isolated PostgreSQL database.","md",null,{},{"icon":66},{"title":63,"description":268},"K2j5fgE5Ez2hfeALdxk4fHqfsveX09UhL5PIJb00uDY",[276,278],{"title":58,"path":59,"stem":60,"description":277,"icon":61,"children":-1},"Run ordered domain behavior around transactional mutations.",{"title":68,"path":69,"stem":70,"description":279,"icon":71,"children":-1},"Compose database-independent constraints, sorting, offset and cursor pagination.",1783784236187]