UNPKG

angular-odata

Version:

Client side OData typescript library for Angular

145 lines 18 kB
import { CsdlAnnotable } from './csdl-annotation'; export class CsdlStructuralProperty extends CsdlAnnotable { Name; Type; Collection; Nullable; constructor({ Name, Type, Nullable, Annotation, }) { super({ Annotation }); this.Name = Name; this.Nullable = Nullable; this.Collection = Type.startsWith('Collection('); this.Type = this.Collection ? Type.substring(11, Type.length - 1) : Type; } toJson() { return { ...super.toJson(), Name: this.Name, Type: this.Collection ? `Collection(${this.Type})` : this.Type, Nullable: this.Nullable, }; } } export class CsdlProperty extends CsdlStructuralProperty { MaxLength; Precision; Scale; Unicode; SRID; DefaultValue; constructor({ Name, Type, Nullable, MaxLength, Precision, Scale, Unicode, SRID, DefaultValue, Annotation, }) { super({ Name, Type, Nullable, Annotation }); this.MaxLength = MaxLength; this.Precision = Precision; this.Scale = Scale; this.Unicode = Unicode; this.SRID = SRID; this.DefaultValue = DefaultValue; } toJson() { const json = { ...super.toJson() }; if (this.MaxLength !== undefined) { json['MaxLength'] = this.MaxLength; } if (this.Precision !== undefined) { json['Precision'] = this.Precision; } if (this.Scale !== undefined) { json['Scale'] = this.Scale; } if (this.Unicode !== undefined) { json['Unicode'] = this.Unicode; } if (this.SRID !== undefined) { json['SRID'] = this.SRID; } if (this.DefaultValue !== undefined) { json['DefaultValue'] = this.DefaultValue; } return json; } toConfig() { return { ...super.toConfig(), name: this.Name, type: this.Type, default: this.DefaultValue, maxLength: this.MaxLength, collection: this.Collection, nullable: this.Nullable, navigation: false, precision: this.Precision, scale: this.Scale, }; } } export class CsdlNavigationProperty extends CsdlStructuralProperty { Partner; ContainsTarget; ReferentialConstraints; OnDelete; constructor({ Name, Type, Nullable, Partner, ContainsTarget, ReferentialConstraints, OnDelete, Annotation, }) { super({ Name, Type, Nullable, Annotation }); this.Partner = Partner; this.ContainsTarget = ContainsTarget; this.ReferentialConstraints = ReferentialConstraints?.map((r) => new CsdlReferentialConstraint(r)); this.OnDelete = OnDelete ? new CsdlOnDelete(OnDelete) : undefined; } toJson() { const json = { ...super.toJson() }; if (this.Partner !== undefined) { json['Partner'] = this.Partner; } if (this.ContainsTarget !== undefined) { json['ContainsTarget'] = this.ContainsTarget; } if (Array.isArray(this.ReferentialConstraints) && this.ReferentialConstraints.length > 0) { json['ReferentialConstraints'] = this.ReferentialConstraints.map((r) => r.toJson()); } if (this.OnDelete !== undefined) { json['OnDelete'] = this.OnDelete; } return json; } toConfig() { return { ...super.toConfig(), name: this.Name, type: this.Type, collection: this.Collection, nullable: this.Nullable, navigation: true, referentials: this.ReferentialConstraints?.map((r) => ({ property: r.Property, referencedProperty: r.ReferencedProperty, })), }; } } export class CsdlReferentialConstraint { Property; ReferencedProperty; constructor({ Property, ReferencedProperty, }) { this.Property = Property; this.ReferencedProperty = ReferencedProperty; } toJson() { return { Property: this.Property, ReferencedProperty: this.ReferencedProperty, }; } } export class CsdlOnDelete { Action; constructor({ Action }) { this.Action = Action; } toJson() { return { Action: this.Action, }; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NkbC1zdHJ1Y3R1cmFsLXByb3BlcnR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1vZGF0YS9zcmMvbGliL21ldGFkYXRhL2NzZGwvY3NkbC1zdHJ1Y3R1cmFsLXByb3BlcnR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVsRCxNQUFNLE9BQWdCLHNCQUF1QixTQUFRLGFBQWE7SUFDaEUsSUFBSSxDQUFTO0lBQ2IsSUFBSSxDQUFTO0lBQ2IsVUFBVSxDQUFVO0lBQ3BCLFFBQVEsQ0FBVztJQUVuQixZQUFZLEVBQ1YsSUFBSSxFQUNKLElBQUksRUFDSixRQUFRLEVBQ1IsVUFBVSxHQU1YO1FBQ0MsS0FBSyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDM0UsQ0FBQztJQUVRLE1BQU07UUFDYixPQUFPO1lBQ0wsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ2pCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUk7WUFDOUQs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QixNQUFNLENBQVM7SUFFZixZQUFZLEVBQUUsTUFBTSxFQUFzQjtRQUN4QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU87WUFDTCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07U0FDcEIsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0cnVjdHVyZWRUeXBlRmllbGRDb25maWcgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBDc2RsQW5ub3RhYmxlIH0gZnJvbSAnLi9jc2RsLWFubm90YXRpb24nO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ3NkbFN0cnVjdHVyYWxQcm9wZXJ0eSBleHRlbmRzIENzZGxBbm5vdGFibGUge1xuICBOYW1lOiBzdHJpbmc7XG4gIFR5cGU6IHN0cmluZztcbiAgQ29sbGVjdGlvbjogYm9vbGVhbjtcbiAgTnVsbGFibGU/OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBOYW1lLFxuICAgIFR5cGUsXG4gICAgTnVsbGFibGUsXG4gICAgQW5ub3RhdGlvbixcbiAgfToge1xuICAgIE5hbWU6IHN0cmluZztcbiAgICBUeXBlOiBzdHJpbmc7XG4gICAgTnVsbGFibGU/OiBib29sZWFuO1xuICAgIEFubm90YXRpb24/OiBhbnlbXTtcbiAgfSkge1xuICAgIHN1cGVyKHsgQW5ub3RhdGlvbiB9KTtcbiAgICB0aGlzLk5hbWUgPSBOYW1lO1xuICAgIHRoaXMuTnVsbGFibGUgPSBOdWxsYWJsZTtcbiAgICB0aGlzLkNvbGxlY3Rpb24gPSBUeXBlLnN0YXJ0c1dpdGgoJ0NvbGxlY3Rpb24oJyk7XG4gICAgdGhpcy5UeXBlID0gdGhpcy5Db2xsZWN0aW9uID8gVHlwZS5zdWJzdHJpbmcoMTEsIFR5cGUubGVuZ3RoIC0gMSkgOiBUeXBlO1xuICB9XG5cbiAgb3ZlcnJpZGUgdG9Kc29uKCkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdXBlci50b0pzb24oKSxcbiAgICAgIE5hbWU6IHRoaXMuTmFtZSxcbiAgICAgIFR5cGU6IHRoaXMuQ29sbGVjdGlvbiA/IGBDb2xsZWN0aW9uKCR7dGhpcy5UeXBlfSlgIDogdGhpcy5UeXBlLFxuICAgICAgTnVsbGFibGU6IHRoaXMuTnVsbGFibGUsXG4gICAgfSBhcyB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDc2RsUHJvcGVydHkgZXh0ZW5kcyBDc2RsU3RydWN0dXJhbFByb3BlcnR5IHtcbiAgTWF4TGVuZ3RoPzogbnVtYmVyO1xuICBQcmVjaXNpb24/OiBudW1iZXI7XG4gIFNjYWxlPzogbnVtYmVyO1xuICBVbmljb2RlPzogYm9vbGVhbjtcbiAgU1JJRD86IHN0cmluZztcbiAgRGVmYXVsdFZhbHVlPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBOYW1lLFxuICAgIFR5cGUsXG4gICAgTnVsbGFibGUsXG4gICAgTWF4TGVuZ3RoLFxuICAgIFByZWNpc2lvbixcbiAgICBTY2FsZSxcbiAgICBVbmljb2RlLFxuICAgIFNSSUQsXG4gICAgRGVmYXVsdFZhbHVlLFxuICAgIEFubm90YXRpb24sXG4gIH06IHtcbiAgICBOYW1lOiBzdHJpbmc7XG4gICAgVHlwZTogc3RyaW5nO1xuICAgIE51bGxhYmxlPzogYm9vbGVhbjtcbiAgICBNYXhMZW5ndGg/OiBudW1iZXI7XG4gICAgUHJlY2lzaW9uPzogbnVtYmVyO1xuICAgIFNjYWxlPzogbnVtYmVyO1xuICAgIFVuaWNvZGU/OiBib29sZWFuO1xuICAgIFNSSUQ/OiBzdHJpbmc7XG4gICAgRGVmYXVsdFZhbHVlPzogc3RyaW5nO1xuICAgIEFubm90YXRpb24/OiBhbnlbXTtcbiAgfSkge1xuICAgIHN1cGVyKHsgTmFtZSwgVHlwZSwgTnVsbGFibGUsIEFubm90YXRpb24gfSk7XG4gICAgdGhpcy5NYXhMZW5ndGggPSBNYXhMZW5ndGg7XG4gICAgdGhpcy5QcmVjaXNpb24gPSBQcmVjaXNpb247XG4gICAgdGhpcy5TY2FsZSA9IFNjYWxlO1xuICAgIHRoaXMuVW5pY29kZSA9IFVuaWNvZGU7XG4gICAgdGhpcy5TUklEID0gU1JJRDtcbiAgICB0aGlzLkRlZmF1bHRWYWx1ZSA9IERlZmF1bHRWYWx1ZTtcbiAgfVxuXG4gIG92ZXJyaWRlIHRvSnNvbigpIHtcbiAgICBjb25zdCBqc29uOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0geyAuLi5zdXBlci50b0pzb24oKSB9O1xuICAgIGlmICh0aGlzLk1heExlbmd0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBqc29uWydNYXhMZW5ndGgnXSA9IHRoaXMuTWF4TGVuZ3RoO1xuICAgIH1cbiAgICBpZiAodGhpcy5QcmVjaXNpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAganNvblsnUHJlY2lzaW9uJ10gPSB0aGlzLlByZWNpc2lvbjtcbiAgICB9XG4gICAgaWYgKHRoaXMuU2NhbGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAganNvblsnU2NhbGUnXSA9IHRoaXMuU2NhbGU7XG4gICAgfVxuICAgIGlmICh0aGlzLlVuaWNvZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAganNvblsnVW5pY29kZSddID0gdGhpcy5Vbmljb2RlO1xuICAgIH1cbiAgICBpZiAodGhpcy5TUklEICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGpzb25bJ1NSSUQnXSA9IHRoaXMuU1JJRDtcbiAgICB9XG4gICAgaWYgKHRoaXMuRGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGpzb25bJ0RlZmF1bHRWYWx1ZSddID0gdGhpcy5EZWZhdWx0VmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgb3ZlcnJpZGUgdG9Db25maWcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1cGVyLnRvQ29uZmlnKCksXG4gICAgICBuYW1lOiB0aGlzLk5hbWUsXG4gICAgICB0eXBlOiB0aGlzLlR5cGUsXG4gICAgICBkZWZhdWx0OiB0aGlzLkRlZmF1bHRWYWx1ZSxcbiAgICAgIG1heExlbmd0aDogdGhpcy5NYXhMZW5ndGgsXG4gICAgICBjb2xsZWN0aW9uOiB0aGlzLkNvbGxlY3Rpb24sXG4gICAgICBudWxsYWJsZTogdGhpcy5OdWxsYWJsZSxcbiAgICAgIG5hdmlnYXRpb246IGZhbHNlLFxuICAgICAgcHJlY2lzaW9uOiB0aGlzLlByZWNpc2lvbixcbiAgICAgIHNjYWxlOiB0aGlzLlNjYWxlLFxuICAgIH0gYXMgU3RydWN0dXJlZFR5cGVGaWVsZENvbmZpZyAmIHsgbmFtZTogc3RyaW5nIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENzZGxOYXZpZ2F0aW9uUHJvcGVydHkgZXh0ZW5kcyBDc2RsU3RydWN0dXJhbFByb3BlcnR5IHtcbiAgcHVibGljIFBhcnRuZXI/OiBzdHJpbmc7XG4gIHB1YmxpYyBDb250YWluc1RhcmdldD86IGJvb2xlYW47XG4gIHB1YmxpYyBSZWZlcmVudGlhbENvbnN0cmFpbnRzPzogQ3NkbFJlZmVyZW50aWFsQ29uc3RyYWludFtdO1xuICBwdWJsaWMgT25EZWxldGU/OiBDc2RsT25EZWxldGU7XG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIE5hbWUsXG4gICAgVHlwZSxcbiAgICBOdWxsYWJsZSxcbiAgICBQYXJ0bmVyLFxuICAgIENvbnRhaW5zVGFyZ2V0LFxuICAgIFJlZmVyZW50aWFsQ29uc3RyYWludHMsXG4gICAgT25EZWxldGUsXG4gICAgQW5ub3RhdGlvbixcbiAgfToge1xuICAgIE5hbWU6IHN0cmluZztcbiAgICBUeXBlOiBzdHJpbmc7XG4gICAgTnVsbGFibGU/OiBib29sZWFuO1xuICAgIFBhcnRuZXI/OiBzdHJpbmc7XG4gICAgQ29udGFpbnNUYXJnZXQ/OiBib29sZWFuO1xuICAgIFJlZmVyZW50aWFsQ29uc3RyYWludHM/OiBhbnlbXTtcbiAgICBPbkRlbGV0ZT86IGFueTtcbiAgICBBbm5vdGF0aW9uPzogYW55W107XG4gIH0pIHtcbiAgICBzdXBlcih7IE5hbWUsIFR5cGUsIE51bGxhYmxlLCBBbm5vdGF0aW9uIH0pO1xuICAgIHRoaXMuUGFydG5lciA9IFBhcnRuZXI7XG4gICAgdGhpcy5Db250YWluc1RhcmdldCA9IENvbnRhaW5zVGFyZ2V0O1xuICAgIHRoaXMuUmVmZXJlbnRpYWxDb25zdHJhaW50cyA9IFJlZmVyZW50aWFsQ29uc3RyYWludHM/Lm1hcChcbiAgICAgIChyKSA9PiBuZXcgQ3NkbFJlZmVyZW50aWFsQ29uc3RyYWludChyKSxcbiAgICApO1xuICAgIHRoaXMuT25EZWxldGUgPSBPbkRlbGV0ZSA/IG5ldyBDc2RsT25EZWxldGUoT25EZWxldGUpIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgb3ZlcnJpZGUgdG9Kc29uKCkge1xuICAgIGNvbnN0IGpzb246IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7IC4uLnN1cGVyLnRvSnNvbigpIH07XG4gICAgaWYgKHRoaXMuUGFydG5lciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBqc29uWydQYXJ0bmVyJ10gPSB0aGlzLlBhcnRuZXI7XG4gICAgfVxuICAgIGlmICh0aGlzLkNvbnRhaW5zVGFyZ2V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGpzb25bJ0NvbnRhaW5zVGFyZ2V0J10gPSB0aGlzLkNvbnRhaW5zVGFyZ2V0O1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBBcnJheS5pc0FycmF5KHRoaXMuUmVmZXJlbnRpYWxDb25zdHJhaW50cykgJiZcbiAgICAgIHRoaXMuUmVmZXJlbnRpYWxDb25zdHJhaW50cy5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBqc29uWydSZWZlcmVudGlhbENvbnN0cmFpbnRzJ10gPSB0aGlzLlJlZmVyZW50aWFsQ29uc3RyYWludHMubWFwKChyKSA9PlxuICAgICAgICByLnRvSnNvbigpLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuT25EZWxldGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAganNvblsnT25EZWxldGUnXSA9IHRoaXMuT25EZWxldGU7XG4gICAgfVxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgb3ZlcnJpZGUgdG9Db25maWcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1cGVyLnRvQ29uZmlnKCksXG4gICAgICBuYW1lOiB0aGlzLk5hbWUsXG4gICAgICB0eXBlOiB0aGlzLlR5cGUsXG4gICAgICBjb2xsZWN0aW9uOiB0aGlzLkNvbGxlY3Rpb24sXG4gICAgICBudWxsYWJsZTogdGhpcy5OdWxsYWJsZSxcbiAgICAgIG5hdmlnYXRpb246IHRydWUsXG4gICAgICByZWZlcmVudGlhbHM6IHRoaXMuUmVmZXJlbnRpYWxDb25zdHJhaW50cz8ubWFwKChyKSA9PiAoe1xuICAgICAgICBwcm9wZXJ0eTogci5Qcm9wZXJ0eSxcbiAgICAgICAgcmVmZXJlbmNlZFByb3BlcnR5OiByLlJlZmVyZW5jZWRQcm9wZXJ0eSxcbiAgICAgIH0pKSxcbiAgICB9IGFzIFN0cnVjdHVyZWRUeXBlRmllbGRDb25maWcgJiB7IG5hbWU6IHN0cmluZyB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDc2RsUmVmZXJlbnRpYWxDb25zdHJhaW50IHtcbiAgUHJvcGVydHk6IHN0cmluZztcbiAgUmVmZXJlbmNlZFByb3BlcnR5OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIFByb3BlcnR5LFxuICAgIFJlZmVyZW5jZWRQcm9wZXJ0eSxcbiAgfToge1xuICAgIFByb3BlcnR5OiBzdHJpbmc7XG4gICAgUmVmZXJlbmNlZFByb3BlcnR5OiBzdHJpbmc7XG4gIH0pIHtcbiAgICB0aGlzLlByb3BlcnR5ID0gUHJvcGVydHk7XG4gICAgdGhpcy5SZWZlcmVuY2VkUHJvcGVydHkgPSBSZWZlcmVuY2VkUHJvcGVydHk7XG4gIH1cblxuICB0b0pzb24oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFByb3BlcnR5OiB0aGlzLlByb3BlcnR5LFxuICAgICAgUmVmZXJlbmNlZFByb3BlcnR5OiB0aGlzLlJlZmVyZW5jZWRQcm9wZXJ0eSxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDc2RsT25EZWxldGUge1xuICBBY3Rpb246IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcih7IEFjdGlvbiB9OiB7IEFjdGlvbjogc3RyaW5nIH0pIHtcbiAgICB0aGlzLkFjdGlvbiA9IEFjdGlvbjtcbiAgfVxuXG4gIHRvSnNvbigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgQWN0aW9uOiB0aGlzLkFjdGlvbixcbiAgICB9O1xuICB9XG59XG4iXX0=