[{"data":1,"prerenderedAt":1161},["ShallowReactive",2],{"navigation_docs":3,"-apps-persistence-crud-operations":196,"-apps-persistence-crud-operations-surround":1156},[4,127,166],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":36},"Kinotic Apps","i-lucide-rocket","\u002Fapps","1.apps",[10,14,18,37,58,91,106,122],{"title":11,"path":12,"stem":13},"Introduction","\u002Fapps\u002Fintroduction","1.apps\u002F1.introduction",{"title":15,"path":16,"stem":17},"Quick Start","\u002Fapps\u002Fquick-start","1.apps\u002F2.quick-start",{"title":19,"icon":20,"path":21,"stem":22,"children":23,"page":36},"Application Structure","i-lucide-folder-tree","\u002Fapps\u002Fapplication-structure","1.apps\u002F3.application-structure",[24,28,32],{"title":25,"path":26,"stem":27},"Overview","\u002Fapps\u002Fapplication-structure\u002Foverview","1.apps\u002F3.application-structure\u002F1.overview",{"title":29,"path":30,"stem":31},"Applications and Projects","\u002Fapps\u002Fapplication-structure\u002Fapplications-and-projects","1.apps\u002F3.application-structure\u002F2.applications-and-projects",{"title":33,"path":34,"stem":35},"Artifact Types","\u002Fapps\u002Fapplication-structure\u002Fartifact-types","1.apps\u002F3.application-structure\u002F3.artifact-types",false,{"title":38,"icon":39,"path":40,"stem":41,"children":42,"page":36},"Services","i-lucide-network","\u002Fapps\u002Fservices","1.apps\u002F4.services",[43,46,50,54],{"title":25,"path":44,"stem":45},"\u002Fapps\u002Fservices\u002Foverview","1.apps\u002F4.services\u002F1.overview",{"title":47,"path":48,"stem":49},"Publishing Services","\u002Fapps\u002Fservices\u002Fpublishing-services","1.apps\u002F4.services\u002F2.publishing-services",{"title":51,"path":52,"stem":53},"Service Proxies","\u002Fapps\u002Fservices\u002Fservice-proxies","1.apps\u002F4.services\u002F3.service-proxies",{"title":55,"path":56,"stem":57},"Streaming","\u002Fapps\u002Fservices\u002Fstreaming","1.apps\u002F4.services\u002F4.streaming",{"title":59,"icon":60,"path":61,"stem":62,"children":63,"page":36},"Persistence","i-lucide-database","\u002Fapps\u002Fpersistence","1.apps\u002F5.persistence",[64,67,71,75,79,83,87],{"title":25,"path":65,"stem":66},"\u002Fapps\u002Fpersistence\u002Foverview","1.apps\u002F5.persistence\u002F1.overview",{"title":68,"path":69,"stem":70},"Defining Entities","\u002Fapps\u002Fpersistence\u002Fdefining-entities","1.apps\u002F5.persistence\u002F2.defining-entities",{"title":72,"path":73,"stem":74},"Entity Decorators","\u002Fapps\u002Fpersistence\u002Fentity-decorators","1.apps\u002F5.persistence\u002F3.entity-decorators",{"title":76,"path":77,"stem":78},"CRUD Operations","\u002Fapps\u002Fpersistence\u002Fcrud-operations","1.apps\u002F5.persistence\u002F4.crud-operations",{"title":80,"path":81,"stem":82},"Named Queries","\u002Fapps\u002Fpersistence\u002Fnamed-queries","1.apps\u002F5.persistence\u002F5.named-queries",{"title":84,"path":85,"stem":86},"Multi-Tenancy","\u002Fapps\u002Fpersistence\u002Fmulti-tenancy","1.apps\u002F5.persistence\u002F6.multi-tenancy",{"title":88,"path":89,"stem":90},"Migrations","\u002Fapps\u002Fpersistence\u002Fmigrations","1.apps\u002F5.persistence\u002F7.migrations",{"title":92,"icon":93,"path":94,"stem":95,"children":96,"page":36},"Security","i-lucide-shield-check","\u002Fapps\u002Fsecurity","1.apps\u002F6.security",[97,101],{"title":98,"path":99,"stem":100,"icon":93},"Access Control","\u002Fapps\u002Fsecurity\u002Faccess-control","1.apps\u002F6.security\u002F1.access-control",{"title":102,"path":103,"stem":104,"icon":105},"Authentication","\u002Fapps\u002Fsecurity\u002Fauthentication","1.apps\u002F6.security\u002F2.authentication","i-lucide-key-round",{"title":107,"icon":108,"path":109,"stem":110,"children":111,"page":36},"Deployment","i-lucide-cloud-upload","\u002Fapps\u002Fdeployment","1.apps\u002F7.deployment",[112,117],{"title":113,"path":114,"stem":115,"icon":116},"Deployment Workflow","\u002Fapps\u002Fdeployment\u002Fworkflow","1.apps\u002F7.deployment\u002F1.workflow","i-lucide-git-branch",{"title":118,"path":119,"stem":120,"icon":121},"Environments","\u002Fapps\u002Fdeployment\u002Fenvironments","1.apps\u002F7.deployment\u002F2.environments","i-lucide-server",{"title":123,"path":124,"stem":125,"icon":126},"CLI Reference","\u002Fapps\u002Fcli-reference","1.apps\u002F8.cli-reference","i-lucide-terminal",{"title":128,"icon":121,"path":129,"stem":130,"children":131,"page":36},"Kinotic OS","\u002Fplatform","2.platform",[132,137,141,146,151,156,161],{"title":133,"path":134,"stem":135,"icon":136},"System Architecture","\u002Fplatform\u002Farchitecture","2.platform\u002F1.architecture","i-lucide-boxes",{"title":138,"path":139,"stem":140,"icon":6},"Deployment Guide","\u002Fplatform\u002Fdeployment-guide","2.platform\u002F2.deployment-guide",{"title":142,"path":143,"stem":144,"icon":145},"Configuration","\u002Fplatform\u002Fconfiguration","2.platform\u002F3.configuration","i-lucide-settings",{"title":147,"path":148,"stem":149,"icon":150},"Organization Management","\u002Fplatform\u002Forganization-management","2.platform\u002F4.organization-management","i-lucide-building-2",{"title":152,"path":153,"stem":154,"icon":155},"System Security","\u002Fplatform\u002Fsystem-security","2.platform\u002F5.system-security","i-lucide-shield",{"title":157,"path":158,"stem":159,"icon":160},"Observability","\u002Fplatform\u002Fobservability","2.platform\u002F6.observability","i-lucide-activity",{"title":162,"path":163,"stem":164,"icon":165},"Contributing","\u002Fplatform\u002Fcontributing","2.platform\u002F7.contributing","i-lucide-git-pull-request",{"title":167,"icon":168,"path":169,"stem":170,"children":171,"page":36},"Reference","i-lucide-book-open","\u002Freference","3.reference",[172,177,181,186,191],{"title":173,"path":174,"stem":175,"icon":176},"Decorators Reference","\u002Freference\u002Fdecorators","3.reference\u002F1.decorators","i-lucide-at-sign",{"title":178,"path":179,"stem":180,"icon":60},"Migration SQL Grammar","\u002Freference\u002Fmigration-sql-grammar","3.reference\u002F2.migration-sql-grammar",{"title":182,"path":183,"stem":184,"icon":185},"ABAC Expression Language","\u002Freference\u002Fabac-expression-language","3.reference\u002F3.abac-expression-language","i-lucide-file-code",{"title":187,"path":188,"stem":189,"icon":190},"CRI Format","\u002Freference\u002Fcri-format","3.reference\u002F4.cri-format","i-lucide-link",{"title":192,"path":193,"stem":194,"icon":195},"SDK Packages","\u002Freference\u002Fsdk-packages","3.reference\u002F5.sdk-packages","i-lucide-package",{"id":197,"title":76,"body":198,"description":1150,"extension":1151,"links":1152,"meta":1153,"navigation":304,"path":77,"seo":1154,"stem":78,"__hash__":1155},"docs\u002F1.apps\u002F5.persistence\u002F4.crud-operations.md",{"type":199,"value":200,"toc":1127},"minimark",[201,210,215,399,403,408,504,515,519,641,648,652,656,689,693,736,740,828,835,839,845,898,901,905,945,951,955,959,985,989,1016,1020,1024,1048,1052,1086,1090,1097,1120,1123],[202,203,204,205,209],"p",{},"After defining your entities and running ",[206,207,208],"code",{},"kinotic sync",", you get fully typed repository classes for each entity. These repositories provide a complete set of data operations.",[211,212,214],"h2",{"id":213},"setup","Setup",[216,217,222],"pre",{"className":218,"code":219,"language":220,"meta":221,"style":221},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { Kinotic } from '@kinotic-ai\u002Fcore'\nimport { PersistencePlugin } from '@kinotic-ai\u002Fpersistence'\nimport { PersonRepository } from '.\u002Fgenerated\u002FPersonRepository'\n\nKinotic.use(PersistencePlugin)\nawait Kinotic.connect({ host: 'localhost', port: 58503 })\n\nconst service = new PersonRepository()\n","typescript","",[206,223,224,257,278,299,306,322,373,378],{"__ignoreMap":221},[225,226,229,233,237,241,244,247,250,254],"span",{"class":227,"line":228},"line",1,[225,230,232],{"class":231},"s7zQu","import",[225,234,236],{"class":235},"sMK4o"," {",[225,238,240],{"class":239},"sTEyZ"," Kinotic",[225,242,243],{"class":235}," }",[225,245,246],{"class":231}," from",[225,248,249],{"class":235}," '",[225,251,253],{"class":252},"sfazB","@kinotic-ai\u002Fcore",[225,255,256],{"class":235},"'\n",[225,258,260,262,264,267,269,271,273,276],{"class":227,"line":259},2,[225,261,232],{"class":231},[225,263,236],{"class":235},[225,265,266],{"class":239}," PersistencePlugin",[225,268,243],{"class":235},[225,270,246],{"class":231},[225,272,249],{"class":235},[225,274,275],{"class":252},"@kinotic-ai\u002Fpersistence",[225,277,256],{"class":235},[225,279,281,283,285,288,290,292,294,297],{"class":227,"line":280},3,[225,282,232],{"class":231},[225,284,236],{"class":235},[225,286,287],{"class":239}," PersonRepository",[225,289,243],{"class":235},[225,291,246],{"class":231},[225,293,249],{"class":235},[225,295,296],{"class":252},".\u002Fgenerated\u002FPersonRepository",[225,298,256],{"class":235},[225,300,302],{"class":227,"line":301},4,[225,303,305],{"emptyLinePlaceholder":304},true,"\n",[225,307,309,312,315,319],{"class":227,"line":308},5,[225,310,311],{"class":239},"Kinotic",[225,313,314],{"class":235},".",[225,316,318],{"class":317},"s2Zo4","use",[225,320,321],{"class":239},"(PersistencePlugin)\n",[225,323,325,328,330,332,335,338,341,345,348,350,353,356,359,362,364,368,370],{"class":227,"line":324},6,[225,326,327],{"class":231},"await",[225,329,240],{"class":239},[225,331,314],{"class":235},[225,333,334],{"class":317},"connect",[225,336,337],{"class":239},"(",[225,339,340],{"class":235},"{",[225,342,344],{"class":343},"swJcz"," host",[225,346,347],{"class":235},":",[225,349,249],{"class":235},[225,351,352],{"class":252},"localhost",[225,354,355],{"class":235},"'",[225,357,358],{"class":235},",",[225,360,361],{"class":343}," port",[225,363,347],{"class":235},[225,365,367],{"class":366},"sbssI"," 58503",[225,369,243],{"class":235},[225,371,372],{"class":239},")\n",[225,374,376],{"class":227,"line":375},7,[225,377,305],{"emptyLinePlaceholder":304},[225,379,381,385,388,391,394,396],{"class":227,"line":380},8,[225,382,384],{"class":383},"spNyl","const",[225,386,387],{"class":239}," service ",[225,389,390],{"class":235},"=",[225,392,393],{"class":235}," new",[225,395,287],{"class":317},[225,397,398],{"class":239},"()\n",[211,400,402],{"id":401},"create","Create",[404,405,407],"h3",{"id":406},"save-a-single-entity","Save a Single Entity",[216,409,411],{"className":218,"code":410,"language":220,"meta":221,"style":221},"const person = await service.save({\n    id: null,\n    firstName: 'Jane',\n    lastName: 'Doe',\n    age: 28\n})\n\u002F\u002F person.id is now set by the server\n",[206,412,413,438,448,465,481,491,498],{"__ignoreMap":221},[225,414,415,417,420,422,425,428,430,433,435],{"class":227,"line":228},[225,416,384],{"class":383},[225,418,419],{"class":239}," person ",[225,421,390],{"class":235},[225,423,424],{"class":231}," await",[225,426,427],{"class":239}," service",[225,429,314],{"class":235},[225,431,432],{"class":317},"save",[225,434,337],{"class":239},[225,436,437],{"class":235},"{\n",[225,439,440,443,445],{"class":227,"line":259},[225,441,442],{"class":343},"    id",[225,444,347],{"class":235},[225,446,447],{"class":235}," null,\n",[225,449,450,453,455,457,460,462],{"class":227,"line":280},[225,451,452],{"class":343},"    firstName",[225,454,347],{"class":235},[225,456,249],{"class":235},[225,458,459],{"class":252},"Jane",[225,461,355],{"class":235},[225,463,464],{"class":235},",\n",[225,466,467,470,472,474,477,479],{"class":227,"line":301},[225,468,469],{"class":343},"    lastName",[225,471,347],{"class":235},[225,473,249],{"class":235},[225,475,476],{"class":252},"Doe",[225,478,355],{"class":235},[225,480,464],{"class":235},[225,482,483,486,488],{"class":227,"line":308},[225,484,485],{"class":343},"    age",[225,487,347],{"class":235},[225,489,490],{"class":366}," 28\n",[225,492,493,496],{"class":227,"line":324},[225,494,495],{"class":235},"}",[225,497,372],{"class":239},[225,499,500],{"class":227,"line":375},[225,501,503],{"class":502},"sHwdD","\u002F\u002F person.id is now set by the server\n",[202,505,506,507,510,511,514],{},"When using ",[206,508,509],{},"@AutoGeneratedId",", pass ",[206,512,513],{},"null"," for the ID field. The server assigns a unique ID and returns it on the saved object.",[404,516,518],{"id":517},"bulk-save","Bulk Save",[216,520,522],{"className":218,"code":521,"language":220,"meta":221,"style":221},"await service.bulkSave([\n    { id: null, firstName: 'Alice', lastName: 'Smith', age: 30 },\n    { id: null, firstName: 'Bob', lastName: 'Jones', age: 25 }\n])\n",[206,523,524,538,590,636],{"__ignoreMap":221},[225,525,526,528,530,532,535],{"class":227,"line":228},[225,527,327],{"class":231},[225,529,427],{"class":239},[225,531,314],{"class":235},[225,533,534],{"class":317},"bulkSave",[225,536,537],{"class":239},"([\n",[225,539,540,543,546,548,551,554,556,558,561,563,565,568,570,572,575,577,579,582,584,587],{"class":227,"line":259},[225,541,542],{"class":235},"    {",[225,544,545],{"class":343}," id",[225,547,347],{"class":235},[225,549,550],{"class":235}," null,",[225,552,553],{"class":343}," firstName",[225,555,347],{"class":235},[225,557,249],{"class":235},[225,559,560],{"class":252},"Alice",[225,562,355],{"class":235},[225,564,358],{"class":235},[225,566,567],{"class":343}," lastName",[225,569,347],{"class":235},[225,571,249],{"class":235},[225,573,574],{"class":252},"Smith",[225,576,355],{"class":235},[225,578,358],{"class":235},[225,580,581],{"class":343}," age",[225,583,347],{"class":235},[225,585,586],{"class":366}," 30",[225,588,589],{"class":235}," },\n",[225,591,592,594,596,598,600,602,604,606,609,611,613,615,617,619,622,624,626,628,630,633],{"class":227,"line":280},[225,593,542],{"class":235},[225,595,545],{"class":343},[225,597,347],{"class":235},[225,599,550],{"class":235},[225,601,553],{"class":343},[225,603,347],{"class":235},[225,605,249],{"class":235},[225,607,608],{"class":252},"Bob",[225,610,355],{"class":235},[225,612,358],{"class":235},[225,614,567],{"class":343},[225,616,347],{"class":235},[225,618,249],{"class":235},[225,620,621],{"class":252},"Jones",[225,623,355],{"class":235},[225,625,358],{"class":235},[225,627,581],{"class":343},[225,629,347],{"class":235},[225,631,632],{"class":366}," 25",[225,634,635],{"class":235}," }\n",[225,637,638],{"class":227,"line":301},[225,639,640],{"class":239},"])\n",[202,642,643,644,647],{},"Bulk save is more efficient than calling ",[206,645,646],{},"save()"," in a loop because it batches the operations into a single request.",[211,649,651],{"id":650},"read","Read",[404,653,655],{"id":654},"find-by-id","Find by ID",[216,657,659],{"className":218,"code":658,"language":220,"meta":221,"style":221},"const person = await service.findById('abc-123')\n",[206,660,661],{"__ignoreMap":221},[225,662,663,665,667,669,671,673,675,678,680,682,685,687],{"class":227,"line":228},[225,664,384],{"class":383},[225,666,419],{"class":239},[225,668,390],{"class":235},[225,670,424],{"class":231},[225,672,427],{"class":239},[225,674,314],{"class":235},[225,676,677],{"class":317},"findById",[225,679,337],{"class":239},[225,681,355],{"class":235},[225,683,684],{"class":252},"abc-123",[225,686,355],{"class":235},[225,688,372],{"class":239},[404,690,692],{"id":691},"find-multiple-by-ids","Find Multiple by IDs",[216,694,696],{"className":218,"code":695,"language":220,"meta":221,"style":221},"const people = await service.findByIds(['abc-123', 'def-456'])\n",[206,697,698],{"__ignoreMap":221},[225,699,700,702,705,707,709,711,713,716,719,721,723,725,727,729,732,734],{"class":227,"line":228},[225,701,384],{"class":383},[225,703,704],{"class":239}," people ",[225,706,390],{"class":235},[225,708,424],{"class":231},[225,710,427],{"class":239},[225,712,314],{"class":235},[225,714,715],{"class":317},"findByIds",[225,717,718],{"class":239},"([",[225,720,355],{"class":235},[225,722,684],{"class":252},[225,724,355],{"class":235},[225,726,358],{"class":235},[225,728,249],{"class":235},[225,730,731],{"class":252},"def-456",[225,733,355],{"class":235},[225,735,640],{"class":239},[404,737,739],{"id":738},"find-all-with-pagination","Find All with Pagination",[216,741,743],{"className":218,"code":742,"language":220,"meta":221,"style":221},"const page = await service.findAll({ page: 0, size: 20 })\nconsole.log(page.content)       \u002F\u002F array of Person\nconsole.log(page.totalElements)  \u002F\u002F total count across all pages\n",[206,744,745,789,810],{"__ignoreMap":221},[225,746,747,749,752,754,756,758,760,763,765,767,770,772,775,777,780,782,785,787],{"class":227,"line":228},[225,748,384],{"class":383},[225,750,751],{"class":239}," page ",[225,753,390],{"class":235},[225,755,424],{"class":231},[225,757,427],{"class":239},[225,759,314],{"class":235},[225,761,762],{"class":317},"findAll",[225,764,337],{"class":239},[225,766,340],{"class":235},[225,768,769],{"class":343}," page",[225,771,347],{"class":235},[225,773,774],{"class":366}," 0",[225,776,358],{"class":235},[225,778,779],{"class":343}," size",[225,781,347],{"class":235},[225,783,784],{"class":366}," 20",[225,786,243],{"class":235},[225,788,372],{"class":239},[225,790,791,794,796,799,802,804,807],{"class":227,"line":259},[225,792,793],{"class":239},"console",[225,795,314],{"class":235},[225,797,798],{"class":317},"log",[225,800,801],{"class":239},"(page",[225,803,314],{"class":235},[225,805,806],{"class":239},"content)       ",[225,808,809],{"class":502},"\u002F\u002F array of Person\n",[225,811,812,814,816,818,820,822,825],{"class":227,"line":280},[225,813,793],{"class":239},[225,815,314],{"class":235},[225,817,798],{"class":317},[225,819,801],{"class":239},[225,821,314],{"class":235},[225,823,824],{"class":239},"totalElements)  ",[225,826,827],{"class":502},"\u002F\u002F total count across all pages\n",[202,829,830,831,834],{},"The ",[206,832,833],{},"page"," parameter is zero-indexed. The returned page object includes the content array, total element count, and pagination metadata.",[211,836,838],{"id":837},"search","Search",[202,840,841,842,314],{},"Perform full-text search across all fields marked with ",[206,843,844],{},"@Text",[216,846,848],{"className":218,"code":847,"language":220,"meta":221,"style":221},"const results = await service.search('Jane', { page: 0, size: 10 })\n",[206,849,850],{"__ignoreMap":221},[225,851,852,854,857,859,861,863,865,867,869,871,873,875,877,879,881,883,885,887,889,891,894,896],{"class":227,"line":228},[225,853,384],{"class":383},[225,855,856],{"class":239}," results ",[225,858,390],{"class":235},[225,860,424],{"class":231},[225,862,427],{"class":239},[225,864,314],{"class":235},[225,866,837],{"class":317},[225,868,337],{"class":239},[225,870,355],{"class":235},[225,872,459],{"class":252},[225,874,355],{"class":235},[225,876,358],{"class":235},[225,878,236],{"class":235},[225,880,769],{"class":343},[225,882,347],{"class":235},[225,884,774],{"class":366},[225,886,358],{"class":235},[225,888,779],{"class":343},[225,890,347],{"class":235},[225,892,893],{"class":366}," 10",[225,895,243],{"class":235},[225,897,372],{"class":239},[202,899,900],{},"The search string is matched against all text-indexed fields on the entity.",[211,902,904],{"id":903},"update","Update",[216,906,908],{"className":218,"code":907,"language":220,"meta":221,"style":221},"person.age = 29\nconst updated = await service.update(person)\n",[206,909,910,925],{"__ignoreMap":221},[225,911,912,915,917,920,922],{"class":227,"line":228},[225,913,914],{"class":239},"person",[225,916,314],{"class":235},[225,918,919],{"class":239},"age ",[225,921,390],{"class":235},[225,923,924],{"class":366}," 29\n",[225,926,927,929,932,934,936,938,940,942],{"class":227,"line":259},[225,928,384],{"class":383},[225,930,931],{"class":239}," updated ",[225,933,390],{"class":235},[225,935,424],{"class":231},[225,937,427],{"class":239},[225,939,314],{"class":235},[225,941,903],{"class":317},[225,943,944],{"class":239},"(person)\n",[202,946,830,947,950],{},[206,948,949],{},"update()"," method only changes fields present in the object. Fields not included in the update payload are left unchanged.",[211,952,954],{"id":953},"delete","Delete",[404,956,958],{"id":957},"delete-by-id","Delete by ID",[216,960,962],{"className":218,"code":961,"language":220,"meta":221,"style":221},"await service.deleteById('abc-123')\n",[206,963,964],{"__ignoreMap":221},[225,965,966,968,970,972,975,977,979,981,983],{"class":227,"line":228},[225,967,327],{"class":231},[225,969,427],{"class":239},[225,971,314],{"class":235},[225,973,974],{"class":317},"deleteById",[225,976,337],{"class":239},[225,978,355],{"class":235},[225,980,684],{"class":252},[225,982,355],{"class":235},[225,984,372],{"class":239},[404,986,988],{"id":987},"delete-by-query","Delete by Query",[216,990,992],{"className":218,"code":991,"language":220,"meta":221,"style":221},"await service.deleteByQuery('age \u003C 18')\n",[206,993,994],{"__ignoreMap":221},[225,995,996,998,1000,1002,1005,1007,1009,1012,1014],{"class":227,"line":228},[225,997,327],{"class":231},[225,999,427],{"class":239},[225,1001,314],{"class":235},[225,1003,1004],{"class":317},"deleteByQuery",[225,1006,337],{"class":239},[225,1008,355],{"class":235},[225,1010,1011],{"class":252},"age \u003C 18",[225,1013,355],{"class":235},[225,1015,372],{"class":239},[211,1017,1019],{"id":1018},"count","Count",[404,1021,1023],{"id":1022},"count-all","Count All",[216,1025,1027],{"className":218,"code":1026,"language":220,"meta":221,"style":221},"const total = await service.count()\n",[206,1028,1029],{"__ignoreMap":221},[225,1030,1031,1033,1036,1038,1040,1042,1044,1046],{"class":227,"line":228},[225,1032,384],{"class":383},[225,1034,1035],{"class":239}," total ",[225,1037,390],{"class":235},[225,1039,424],{"class":231},[225,1041,427],{"class":239},[225,1043,314],{"class":235},[225,1045,1018],{"class":317},[225,1047,398],{"class":239},[404,1049,1051],{"id":1050},"count-by-query","Count by Query",[216,1053,1055],{"className":218,"code":1054,"language":220,"meta":221,"style":221},"const adults = await service.countByQuery('age >= 18')\n",[206,1056,1057],{"__ignoreMap":221},[225,1058,1059,1061,1064,1066,1068,1070,1072,1075,1077,1079,1082,1084],{"class":227,"line":228},[225,1060,384],{"class":383},[225,1062,1063],{"class":239}," adults ",[225,1065,390],{"class":235},[225,1067,424],{"class":231},[225,1069,427],{"class":239},[225,1071,314],{"class":235},[225,1073,1074],{"class":317},"countByQuery",[225,1076,337],{"class":239},[225,1078,355],{"class":235},[225,1080,1081],{"class":252},"age >= 18",[225,1083,355],{"class":235},[225,1085,372],{"class":239},[211,1087,1089],{"id":1088},"sync-index","Sync Index",[202,1091,1092,1093,1096],{},"After performing writes, changes may not be immediately available for search. Call ",[206,1094,1095],{},"syncIndex()"," to ensure recent writes are queryable.",[216,1098,1100],{"className":218,"code":1099,"language":220,"meta":221,"style":221},"await service.syncIndex()\n\u002F\u002F Recent writes are now immediately available for search\n",[206,1101,1102,1115],{"__ignoreMap":221},[225,1103,1104,1106,1108,1110,1113],{"class":227,"line":228},[225,1105,327],{"class":231},[225,1107,427],{"class":239},[225,1109,314],{"class":235},[225,1111,1112],{"class":317},"syncIndex",[225,1114,398],{"class":239},[225,1116,1117],{"class":227,"line":259},[225,1118,1119],{"class":502},"\u002F\u002F Recent writes are now immediately available for search\n",[202,1121,1122],{},"This is useful in scripts or tests where you need to query data right after writing it. In production, the platform refreshes automatically at a short interval.",[1124,1125,1126],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":221,"searchDepth":259,"depth":259,"links":1128},[1129,1130,1134,1139,1140,1141,1145,1149],{"id":213,"depth":259,"text":214},{"id":401,"depth":259,"text":402,"children":1131},[1132,1133],{"id":406,"depth":280,"text":407},{"id":517,"depth":280,"text":518},{"id":650,"depth":259,"text":651,"children":1135},[1136,1137,1138],{"id":654,"depth":280,"text":655},{"id":691,"depth":280,"text":692},{"id":738,"depth":280,"text":739},{"id":837,"depth":259,"text":838},{"id":903,"depth":259,"text":904},{"id":953,"depth":259,"text":954,"children":1142},[1143,1144],{"id":957,"depth":280,"text":958},{"id":987,"depth":280,"text":988},{"id":1018,"depth":259,"text":1019,"children":1146},[1147,1148],{"id":1022,"depth":280,"text":1023},{"id":1050,"depth":280,"text":1051},{"id":1088,"depth":259,"text":1089},"Using generated entity services for create, read, update, delete, search, and count operations in Kinotic.","md",null,{},{"title":76,"description":1150},"xJ7dPf3d2JM0NNtak8J5ZNTBIeB0sxarKSOfk65Zq3w",[1157,1159],{"title":72,"path":73,"stem":74,"description":1158,"children":-1},"All available entity decorators for configuring field behavior, indexing, relationships, and versioning in Kinotic persistence.",{"title":80,"path":81,"stem":82,"description":1160,"children":-1},"Defining and using custom named queries on entity services in Kinotic.",1775187765369]