[{"data":1,"prerenderedAt":1111},["ShallowReactive",2],{"navigation_docs":3,"-apps-persistence-entity-decorators":196,"-apps-persistence-entity-decorators-surround":1106},[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":72,"body":198,"description":1100,"extension":1101,"links":1102,"meta":1103,"navigation":348,"path":73,"seo":1104,"stem":74,"__hash__":1105},"docs\u002F1.apps\u002F5.persistence\u002F3.entity-decorators.md",{"type":199,"value":200,"toc":1081},"minimark",[201,210,215,220,223,264,268,274,299,303,306,418,425,495,499,502,527,531,534,576,580,583,610,616,620,624,630,848,855,859,863,872,901,904,908,912,919,1071,1077],[202,203,204,205,209],"p",{},"Kinotic provides a set of decorators to control how entity fields are stored, indexed, and queried. All decorators are imported from ",[206,207,208],"code",{},"@kinotic-ai\u002Fpersistence",".",[211,212,214],"h2",{"id":213},"field-decorators","Field Decorators",[216,217,219],"h3",{"id":218},"notnull","@NotNull",[202,221,222],{},"Marks a field as required. The server will reject saves where this field is missing or null.",[224,225,230],"pre",{"className":226,"code":227,"language":228,"meta":229,"style":229},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","@NotNull\nname: string = ''\n","typescript","",[206,231,232,245],{"__ignoreMap":229},[233,234,237,241],"span",{"class":235,"line":236},"line",1,[233,238,240],{"class":239},"sMK4o","@",[233,242,244],{"class":243},"sTEyZ","NotNull\n",[233,246,248,252,255,258,261],{"class":235,"line":247},2,[233,249,251],{"class":250},"sBMFI","name",[233,253,254],{"class":239},":",[233,256,257],{"class":243}," string ",[233,259,260],{"class":239},"=",[233,262,263],{"class":239}," ''\n",[216,265,267],{"id":266},"text","@Text",[202,269,270,271,273],{},"Enables full-text search indexing on a string field. Without this decorator, string fields are indexed as keywords (exact match only). With ",[206,272,267],{},", you can perform partial and fuzzy text searches.",[224,275,277],{"className":226,"code":276,"language":228,"meta":229,"style":229},"@Text\ndescription: string = ''\n",[206,278,279,286],{"__ignoreMap":229},[233,280,281,283],{"class":235,"line":236},[233,282,240],{"class":239},[233,284,285],{"class":243},"Text\n",[233,287,288,291,293,295,297],{"class":235,"line":247},[233,289,290],{"class":250},"description",[233,292,254],{"class":239},[233,294,257],{"class":243},[233,296,260],{"class":239},[233,298,263],{"class":239},[216,300,302],{"id":301},"precision","@Precision",[202,304,305],{},"Controls the numeric precision used for storage and indexing. By default, numbers are stored as integers.",[224,307,309],{"className":226,"code":308,"language":228,"meta":229,"style":229},"import { Precision, PrecisionType } from '@kinotic-ai\u002Fpersistence'\n\n@Precision(PrecisionType.SHORT)\nage: number = 0\n\n@Precision(PrecisionType.DOUBLE)\nprice: number = 0.0\n",[206,310,311,344,350,367,384,389,403],{"__ignoreMap":229},[233,312,313,317,320,323,326,329,332,335,338,341],{"class":235,"line":236},[233,314,316],{"class":315},"s7zQu","import",[233,318,319],{"class":239}," {",[233,321,322],{"class":243}," Precision",[233,324,325],{"class":239},",",[233,327,328],{"class":243}," PrecisionType",[233,330,331],{"class":239}," }",[233,333,334],{"class":315}," from",[233,336,337],{"class":239}," '",[233,339,208],{"class":340},"sfazB",[233,342,343],{"class":239},"'\n",[233,345,346],{"class":235,"line":247},[233,347,349],{"emptyLinePlaceholder":348},true,"\n",[233,351,353,355,359,362,364],{"class":235,"line":352},3,[233,354,240],{"class":239},[233,356,358],{"class":357},"s2Zo4","Precision",[233,360,361],{"class":243},"(PrecisionType",[233,363,209],{"class":239},[233,365,366],{"class":243},"SHORT)\n",[233,368,370,373,375,378,380],{"class":235,"line":369},4,[233,371,372],{"class":250},"age",[233,374,254],{"class":239},[233,376,377],{"class":243}," number ",[233,379,260],{"class":239},[233,381,383],{"class":382},"sbssI"," 0\n",[233,385,387],{"class":235,"line":386},5,[233,388,349],{"emptyLinePlaceholder":348},[233,390,392,394,396,398,400],{"class":235,"line":391},6,[233,393,240],{"class":239},[233,395,358],{"class":357},[233,397,361],{"class":243},[233,399,209],{"class":239},[233,401,402],{"class":243},"DOUBLE)\n",[233,404,406,409,411,413,415],{"class":235,"line":405},7,[233,407,408],{"class":250},"price",[233,410,254],{"class":239},[233,412,377],{"class":243},[233,414,260],{"class":239},[233,416,417],{"class":382}," 0.0\n",[202,419,420,421,424],{},"Available ",[206,422,423],{},"PrecisionType"," values:",[426,427,428,441],"table",{},[429,430,431],"thead",{},[432,433,434,438],"tr",{},[435,436,437],"th",{},"Type",[435,439,440],{},"Description",[442,443,444,455,465,475,485],"tbody",{},[432,445,446,452],{},[447,448,449],"td",{},[206,450,451],{},"SHORT",[447,453,454],{},"16-bit integer",[432,456,457,462],{},[447,458,459],{},[206,460,461],{},"INT",[447,463,464],{},"32-bit integer (default for numbers)",[432,466,467,472],{},[447,468,469],{},[206,470,471],{},"LONG",[447,473,474],{},"64-bit integer",[432,476,477,482],{},[447,478,479],{},[206,480,481],{},"FLOAT",[447,483,484],{},"32-bit floating point",[432,486,487,492],{},[447,488,489],{},[206,490,491],{},"DOUBLE",[447,493,494],{},"64-bit floating point",[216,496,498],{"id":497},"notindexed","@NotIndexed",[202,500,501],{},"Excludes a field from indexing. The field is still stored and returned in query results, but you cannot search or filter by it. Useful for large text blobs or fields that do not need to be queried.",[224,503,505],{"className":226,"code":504,"language":228,"meta":229,"style":229},"@NotIndexed\nnotes: string = ''\n",[206,506,507,514],{"__ignoreMap":229},[233,508,509,511],{"class":235,"line":236},[233,510,240],{"class":239},[233,512,513],{"class":243},"NotIndexed\n",[233,515,516,519,521,523,525],{"class":235,"line":247},[233,517,518],{"class":250},"notes",[233,520,254],{"class":239},[233,522,257],{"class":243},[233,524,260],{"class":239},[233,526,263],{"class":239},[216,528,530],{"id":529},"flattened","@Flattened",[202,532,533],{},"Optimizes storage for dynamic key-value data where the keys are not known ahead of time. Flattened fields support keyword-level queries on both keys and values.",[224,535,537],{"className":226,"code":536,"language":228,"meta":229,"style":229},"@Flattened\nmetadata: Record\u003Cstring, any> = {}\n",[206,538,539,546],{"__ignoreMap":229},[233,540,541,543],{"class":235,"line":236},[233,542,240],{"class":239},[233,544,545],{"class":243},"Flattened\n",[233,547,548,551,553,556,559,562,564,567,570,573],{"class":235,"line":247},[233,549,550],{"class":250},"metadata",[233,552,254],{"class":239},[233,554,555],{"class":243}," Record",[233,557,558],{"class":239},"\u003C",[233,560,561],{"class":243},"string",[233,563,325],{"class":239},[233,565,566],{"class":243}," any",[233,568,569],{"class":239},">",[233,571,572],{"class":239}," =",[233,574,575],{"class":239}," {}\n",[216,577,579],{"id":578},"nested","@Nested",[202,581,582],{},"Preserves the independence of each element in an array of objects. This allows you to query individual elements without cross-matching between them.",[224,584,586],{"className":226,"code":585,"language":228,"meta":229,"style":229},"@Nested\naddresses: Address[] = []\n",[206,587,588,595],{"__ignoreMap":229},[233,589,590,592],{"class":235,"line":236},[233,591,240],{"class":239},[233,593,594],{"class":243},"Nested\n",[233,596,597,600,602,605,607],{"class":235,"line":247},[233,598,599],{"class":250},"addresses",[233,601,254],{"class":239},[233,603,604],{"class":243}," Address[] ",[233,606,260],{"class":239},[233,608,609],{"class":243}," []\n",[202,611,612,613,615],{},"Without ",[206,614,579],{},", arrays of objects are flattened, which can produce unexpected results when querying across multiple fields of array elements.",[211,617,619],{"id":618},"relationship-decorators","Relationship Decorators",[216,621,623],{"id":622},"discriminator","@Discriminator",[202,625,626,627,629],{},"Enables polymorphic (union) types. Apply ",[206,628,623],{}," to a property that determines the concrete type of the entity. This allows a single entity collection to store multiple subtypes.",[224,631,633],{"className":226,"code":632,"language":228,"meta":229,"style":229},"import { Entity, AutoGeneratedId, Discriminator, MultiTenancyType } from '@kinotic-ai\u002Fpersistence'\n\n@Entity(MultiTenancyType.NONE)\nexport class Pet {\n    @AutoGeneratedId\n    id: string | null = null\n\n    @Discriminator\n    type: string = ''\n}\n\nexport class Dog extends Pet {\n    breed: string = ''\n}\n\nexport class Cat extends Pet {\n    lives: number = 9\n}\n",[206,634,635,669,673,688,703,711,733,737,745,759,765,770,787,801,806,811,827,843],{"__ignoreMap":229},[233,636,637,639,641,644,646,649,651,654,656,659,661,663,665,667],{"class":235,"line":236},[233,638,316],{"class":315},[233,640,319],{"class":239},[233,642,643],{"class":243}," Entity",[233,645,325],{"class":239},[233,647,648],{"class":243}," AutoGeneratedId",[233,650,325],{"class":239},[233,652,653],{"class":243}," Discriminator",[233,655,325],{"class":239},[233,657,658],{"class":243}," MultiTenancyType",[233,660,331],{"class":239},[233,662,334],{"class":315},[233,664,337],{"class":239},[233,666,208],{"class":340},[233,668,343],{"class":239},[233,670,671],{"class":235,"line":247},[233,672,349],{"emptyLinePlaceholder":348},[233,674,675,677,680,683,685],{"class":235,"line":352},[233,676,240],{"class":239},[233,678,679],{"class":357},"Entity",[233,681,682],{"class":243},"(MultiTenancyType",[233,684,209],{"class":239},[233,686,687],{"class":243},"NONE)\n",[233,689,690,693,697,700],{"class":235,"line":369},[233,691,692],{"class":315},"export",[233,694,696],{"class":695},"spNyl"," class",[233,698,699],{"class":250}," Pet",[233,701,702],{"class":239}," {\n",[233,704,705,708],{"class":235,"line":386},[233,706,707],{"class":239},"    @",[233,709,710],{"class":243},"AutoGeneratedId\n",[233,712,713,717,719,722,725,728,730],{"class":235,"line":391},[233,714,716],{"class":715},"swJcz","    id",[233,718,254],{"class":239},[233,720,721],{"class":250}," string",[233,723,724],{"class":239}," |",[233,726,727],{"class":250}," null",[233,729,572],{"class":239},[233,731,732],{"class":239}," null\n",[233,734,735],{"class":235,"line":405},[233,736,349],{"emptyLinePlaceholder":348},[233,738,740,742],{"class":235,"line":739},8,[233,741,707],{"class":239},[233,743,744],{"class":243},"Discriminator\n",[233,746,748,751,753,755,757],{"class":235,"line":747},9,[233,749,750],{"class":715},"    type",[233,752,254],{"class":239},[233,754,721],{"class":250},[233,756,572],{"class":239},[233,758,263],{"class":239},[233,760,762],{"class":235,"line":761},10,[233,763,764],{"class":239},"}\n",[233,766,768],{"class":235,"line":767},11,[233,769,349],{"emptyLinePlaceholder":348},[233,771,773,775,777,780,783,785],{"class":235,"line":772},12,[233,774,692],{"class":315},[233,776,696],{"class":695},[233,778,779],{"class":250}," Dog",[233,781,782],{"class":695}," extends",[233,784,699],{"class":250},[233,786,702],{"class":239},[233,788,790,793,795,797,799],{"class":235,"line":789},13,[233,791,792],{"class":715},"    breed",[233,794,254],{"class":239},[233,796,721],{"class":250},[233,798,572],{"class":239},[233,800,263],{"class":239},[233,802,804],{"class":235,"line":803},14,[233,805,764],{"class":239},[233,807,809],{"class":235,"line":808},15,[233,810,349],{"emptyLinePlaceholder":348},[233,812,814,816,818,821,823,825],{"class":235,"line":813},16,[233,815,692],{"class":315},[233,817,696],{"class":695},[233,819,820],{"class":250}," Cat",[233,822,782],{"class":695},[233,824,699],{"class":250},[233,826,702],{"class":239},[233,828,830,833,835,838,840],{"class":235,"line":829},17,[233,831,832],{"class":715},"    lives",[233,834,254],{"class":239},[233,836,837],{"class":250}," number",[233,839,572],{"class":239},[233,841,842],{"class":382}," 9\n",[233,844,846],{"class":235,"line":845},18,[233,847,764],{"class":239},[202,849,850,851,854],{},"Only the base class needs the ",[206,852,853],{},"@Entity"," decorator. Subclasses inherit the entity configuration. The discriminator field value is used during deserialization to determine which subclass to instantiate.",[211,856,858],{"id":857},"versioning","Versioning",[216,860,862],{"id":861},"version","@Version",[202,864,865,866,868,869,209],{},"Enables optimistic locking on the entity. When an entity with a ",[206,867,862],{}," field is updated, the server checks that the version matches the current stored version. If another update occurred in between, the save is rejected with a conflict error. The field type must be ",[206,870,871],{},"string | null",[224,873,875],{"className":226,"code":874,"language":228,"meta":229,"style":229},"@Version\nversion: string | null = null\n",[206,876,877,884],{"__ignoreMap":229},[233,878,879,881],{"class":235,"line":236},[233,880,240],{"class":239},[233,882,883],{"class":243},"Version\n",[233,885,886,888,890,892,895,897,899],{"class":235,"line":247},[233,887,861],{"class":250},[233,889,254],{"class":239},[233,891,257],{"class":243},[233,893,894],{"class":239},"|",[233,896,727],{"class":239},[233,898,572],{"class":239},[233,900,732],{"class":239},[202,902,903],{},"This is useful for preventing lost updates in concurrent environments.",[211,905,907],{"id":906},"time-series","Time Series",[216,909,911],{"id":910},"timereference","@TimeReference",[202,913,914,915,918],{},"Marks the time field for stream entities (",[206,916,917],{},"EntityType.STREAM","). This field is used as the timestamp for time-series indexing and partitioning.",[224,920,922],{"className":226,"code":921,"language":228,"meta":229,"style":229},"import { Entity, AutoGeneratedId, TimeReference, MultiTenancyType, EntityType } from '@kinotic-ai\u002Fpersistence'\n\n@Entity(MultiTenancyType.NONE, EntityType.STREAM)\nexport class SensorReading {\n    @AutoGeneratedId\n    id: string | null = null\n\n    @TimeReference\n    timestamp: Date = new Date()\n\n    value: number = 0.0\n}\n",[206,923,924,960,964,986,997,1003,1019,1023,1030,1050,1054,1067],{"__ignoreMap":229},[233,925,926,928,930,932,934,936,938,941,943,945,947,950,952,954,956,958],{"class":235,"line":236},[233,927,316],{"class":315},[233,929,319],{"class":239},[233,931,643],{"class":243},[233,933,325],{"class":239},[233,935,648],{"class":243},[233,937,325],{"class":239},[233,939,940],{"class":243}," TimeReference",[233,942,325],{"class":239},[233,944,658],{"class":243},[233,946,325],{"class":239},[233,948,949],{"class":243}," EntityType",[233,951,331],{"class":239},[233,953,334],{"class":315},[233,955,337],{"class":239},[233,957,208],{"class":340},[233,959,343],{"class":239},[233,961,962],{"class":235,"line":247},[233,963,349],{"emptyLinePlaceholder":348},[233,965,966,968,970,972,974,977,979,981,983],{"class":235,"line":352},[233,967,240],{"class":239},[233,969,679],{"class":357},[233,971,682],{"class":243},[233,973,209],{"class":239},[233,975,976],{"class":243},"NONE",[233,978,325],{"class":239},[233,980,949],{"class":243},[233,982,209],{"class":239},[233,984,985],{"class":243},"STREAM)\n",[233,987,988,990,992,995],{"class":235,"line":369},[233,989,692],{"class":315},[233,991,696],{"class":695},[233,993,994],{"class":250}," SensorReading",[233,996,702],{"class":239},[233,998,999,1001],{"class":235,"line":386},[233,1000,707],{"class":239},[233,1002,710],{"class":243},[233,1004,1005,1007,1009,1011,1013,1015,1017],{"class":235,"line":391},[233,1006,716],{"class":715},[233,1008,254],{"class":239},[233,1010,721],{"class":250},[233,1012,724],{"class":239},[233,1014,727],{"class":250},[233,1016,572],{"class":239},[233,1018,732],{"class":239},[233,1020,1021],{"class":235,"line":405},[233,1022,349],{"emptyLinePlaceholder":348},[233,1024,1025,1027],{"class":235,"line":739},[233,1026,707],{"class":239},[233,1028,1029],{"class":243},"TimeReference\n",[233,1031,1032,1035,1037,1040,1042,1045,1047],{"class":235,"line":747},[233,1033,1034],{"class":715},"    timestamp",[233,1036,254],{"class":239},[233,1038,1039],{"class":250}," Date",[233,1041,572],{"class":239},[233,1043,1044],{"class":239}," new",[233,1046,1039],{"class":715},[233,1048,1049],{"class":243},"()\n",[233,1051,1052],{"class":235,"line":761},[233,1053,349],{"emptyLinePlaceholder":348},[233,1055,1056,1059,1061,1063,1065],{"class":235,"line":767},[233,1057,1058],{"class":715},"    value",[233,1060,254],{"class":239},[233,1062,837],{"class":250},[233,1064,572],{"class":239},[233,1066,417],{"class":382},[233,1068,1069],{"class":235,"line":772},[233,1070,764],{"class":239},[202,1072,1073,1074,209],{},"For a complete reference of all decorators, see the ",[1075,1076,173],"a",{"href":174},[1078,1079,1080],"style",{},"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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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 .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 .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 .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 pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}",{"title":229,"searchDepth":247,"depth":247,"links":1082},[1083,1091,1094,1097],{"id":213,"depth":247,"text":214,"children":1084},[1085,1086,1087,1088,1089,1090],{"id":218,"depth":352,"text":219},{"id":266,"depth":352,"text":267},{"id":301,"depth":352,"text":302},{"id":497,"depth":352,"text":498},{"id":529,"depth":352,"text":530},{"id":578,"depth":352,"text":579},{"id":618,"depth":247,"text":619,"children":1092},[1093],{"id":622,"depth":352,"text":623},{"id":857,"depth":247,"text":858,"children":1095},[1096],{"id":861,"depth":352,"text":862},{"id":906,"depth":247,"text":907,"children":1098},[1099],{"id":910,"depth":352,"text":911},"All available entity decorators for configuring field behavior, indexing, relationships, and versioning in Kinotic persistence.","md",null,{},{"title":72,"description":1100},"O_9GO63UrdsbnRMG9o0JaRRSgIquvS8LXCuxjUMMRIU",[1107,1109],{"title":68,"path":69,"stem":70,"description":1108,"children":-1},"How to define entities using TypeScript decorators for Kinotic's persistence layer.",{"title":76,"path":77,"stem":78,"description":1110,"children":-1},"Using generated entity services for create, read, update, delete, search, and count operations in Kinotic.",1775187765291]