MCPcopy Create free account
hub / github.com/zenstackhq/zenstack / updateMany

Function updateMany

packages/orm/src/client/crud/operations/base.ts:1553–1733  ·  view source on GitHub ↗
(
        kysely: AnyKysely,
        model: string,
        where: any,
        data: any,
        limit: number | undefined,
        returnData: ReturnData,
        filterModel?: string,
        fromRelation?: FromRelationContext,
        fieldsToReturn?: readonly string[],
    )

Source from the content-addressed store, hash-verified

1551 }
1552
1553 protected async updateMany<
1554 ReturnData extends boolean,
1555 Result = ReturnData extends true ? unknown[] : { count: number },
1556 >(
1557 kysely: AnyKysely,
1558 model: string,
1559 where: any,
1560 data: any,
1561 limit: number | undefined,
1562 returnData: ReturnData,
1563 filterModel?: string,
1564 fromRelation?: FromRelationContext,
1565 fieldsToReturn?: readonly string[],
1566 ): Promise<Result> {
1567 if (typeof data !== 'object') {
1568 throw createInvalidInputError('data must be an object');
1569 }
1570
1571 if (Object.keys(data).length === 0) {
1572 return (returnData ? [] : { count: 0 }) as Result;
1573 }
1574
1575 const modelDef = this.requireModel(model);
1576 if (modelDef.baseModel && limit !== undefined) {
1577 throw createNotSupportedError('Updating with a limit is not supported for polymorphic models');
1578 }
1579
1580 const parentWhere = await this.buildUpdateParentRelationFilter(kysely, fromRelation);
1581 let combinedWhere: WhereInput<Schema, GetModels<Schema>, any, false> = where ?? true;
1582 if (Object.keys(parentWhere).length > 0) {
1583 combinedWhere = Object.keys(combinedWhere).length > 0 ? { AND: [parentWhere, combinedWhere] } : parentWhere;
1584 }
1585
1586 filterModel ??= model;
1587 let updateFields: any = {};
1588
1589 for (const field in data) {
1590 if (isRelationField(this.schema, model, field)) {
1591 continue;
1592 }
1593 updateFields[field] = this.processScalarFieldUpdateData(model, field, data);
1594 }
1595
1596 let resultFromBaseModel: any = undefined;
1597 if (modelDef.baseModel) {
1598 const baseResult = await this.processBaseModelUpdateMany(
1599 kysely,
1600 modelDef.baseModel,
1601 combinedWhere,
1602 updateFields,
1603 filterModel,
1604 );
1605 updateFields = baseResult.remainingFields;
1606 resultFromBaseModel = baseResult.baseResult;
1607 }
1608
1609 // check again if we don't have anything to update for this model
1610 if (Object.keys(updateFields).length === 0) {

Callers

nothing calls this directly

Calls 7

createInvalidInputErrorFunction · 0.90
createNotSupportedErrorFunction · 0.90
isRelationFieldFunction · 0.90
requireIdFieldsFunction · 0.90
requireModelMethod · 0.80
buildFilterMethod · 0.80
executeQueryMethod · 0.45

Tested by

no test coverage detected