本文整理汇总了TypeScript中klay-core.IModel.clone方法的典型用法代码示例。如果您正苦于以下问题:TypeScript IModel.clone方法的具体用法?TypeScript IModel.clone怎么用?TypeScript IModel.clone使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类klay-core.IModel
的用法示例。
在下文中一共展示了IModel.clone方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: creatifyModel
export function creatifyModel(original: IModel): IModel {
const model = original.clone()
const automanage = model.spec.db!.automanage
const automanagedPaths = automanage
.filter(item => eventMatches(item.event, DatabaseEvent.Create))
.map(item => item.property)
return omitAll(model, automanagedPaths)
}
示例2: getModelForEvent
export function getModelForEvent(original: IModel, event: DatabaseEvent): IModel {
const model = original.clone()
if (!model.spec.db) {
return model
}
setDatabaseProperties(model, event)
setAutomanagePhaseProperties(model, event)
return model
}
示例3: paramifyModel
export function paramifyModel(original: IModel, options?: IParamifyOptions): IModel {
const model = original.clone()
const pkField = getPrimaryKeyField(original)
const paramName = (options && options.idParamName) || pkField
const children = model.spec.children as IModelChild[]
const pkModel = children
.find(child => child.path === pkField)!
.model.strict(false)
.required()
model.spec = {}
return model.type(ModelType.Object).children({[paramName]: pkModel})
}
示例4: updateifyModel
export function updateifyModel(original: IModel): IModel {
const model = original.clone()
const constraints = model.spec.db!.constrain
const automanage = model.spec.db!.automanage
const automanagedPaths = automanage
.filter(item => eventMatches(item.event, DatabaseEvent.Update))
.map(item => item.property)
const immutableProperties = constraints
.filter(item => item.type === ConstraintType.Immutable)
.map(item => item.properties)
const mergedPaths = [...automanagedPaths, ...flatten(immutableProperties)]
for (const path of mergedPaths) {
const childModel = findModel(model, path)
childModel.optional()
}
return model
}