angular-odata
Version:
Client side OData typescript library for Angular
55 lines • 5.75 kB
JavaScript
import { ODataEntityService } from './entity';
/**
* OData Singleton Service
* www.odata.org/getting-started/advanced-tutorial/#singleton
*/
export class ODataSingletonService extends ODataEntityService {
static Model;
model(entity) {
const Service = this.constructor;
return this.entity().asModel((entity ?? {}), {
ModelType: Service.Model,
});
}
/**
* Get the entity resource for this service.
* @param key The entity key.
*/
entity() {
return this.client.singleton(this.name, this.apiNameOrEntityType);
}
/**
* Attach an existing model to this service.
* @param model The model to attach.
*/
attach(model) {
model.attach(this.entity());
}
/**
* The schema for the singleton.
*/
get singletonSchema() {
return this.api.findEntitySet(this.name);
}
/**
* Update the singleton entity
* @param attrs The attributes for the entity.
* @param etag The etag for the entity.
* @param options The options for the request.
*/
update(attrs, options) {
const res = this.entity();
return res.update(attrs, options);
}
/**
* Patch the singleton entity
* @param attrs The attributes for the entity.
* @param etag The etag for the entity.
* @param options The options for the request.
*/
patch(attrs, options) {
const res = this.entity();
return res.modify(attrs, options);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xldG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1vZGF0YS9zcmMvbGliL3NlcnZpY2VzL3NpbmdsZXRvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFOUM7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHFCQUF5QixTQUFRLGtCQUFxQjtJQUNqRSxNQUFNLENBQUMsS0FBSyxDQUFxQjtJQUNqQyxLQUFLLENBQUMsTUFBbUI7UUFDdkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQTJDLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBZSxFQUFFO1lBQ3pELFNBQVMsRUFBRSxPQUFPLENBQUMsS0FBSztTQUN6QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0Q7OztPQUdHO0lBQ0ksTUFBTTtRQUNYLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUEwQixLQUFRO1FBQzdDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FDWCxLQUFpQixFQUNqQixPQUEwQztRQUUxQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDMUIsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxLQUFLLENBQ1YsS0FBaUIsRUFDakIsT0FBMEM7UUFFMUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzFCLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT0RhdGFNb2RlbCB9IGZyb20gJy4uL21vZGVscy9tb2RlbCc7XG5pbXBvcnQge1xuICBPRGF0YUVudGl0eSxcbiAgT0RhdGFPcHRpb25zLFxuICBPRGF0YVNpbmdsZXRvblJlc291cmNlLFxufSBmcm9tICcuLi9yZXNvdXJjZXMnO1xuaW1wb3J0IHsgT0RhdGFFbnRpdHlTZXJ2aWNlIH0gZnJvbSAnLi9lbnRpdHknO1xuXG4vKipcbiAqIE9EYXRhIFNpbmdsZXRvbiBTZXJ2aWNlXG4gKiB3d3cub2RhdGEub3JnL2dldHRpbmctc3RhcnRlZC9hZHZhbmNlZC10dXRvcmlhbC8jc2luZ2xldG9uXG4gKi9cbmV4cG9ydCBjbGFzcyBPRGF0YVNpbmdsZXRvblNlcnZpY2U8VD4gZXh0ZW5kcyBPRGF0YUVudGl0eVNlcnZpY2U8VD4ge1xuICBzdGF0aWMgTW9kZWw/OiB0eXBlb2YgT0RhdGFNb2RlbDtcbiAgbW9kZWwoZW50aXR5PzogUGFydGlhbDxUPikge1xuICAgIGNvbnN0IFNlcnZpY2UgPSB0aGlzLmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBPRGF0YVNpbmdsZXRvblNlcnZpY2U7XG4gICAgcmV0dXJuIHRoaXMuZW50aXR5KCkuYXNNb2RlbCgoZW50aXR5ID8/IHt9KSBhcyBQYXJ0aWFsPFQ+LCB7XG4gICAgICBNb2RlbFR5cGU6IFNlcnZpY2UuTW9kZWwsXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIEdldCB0aGUgZW50aXR5IHJlc291cmNlIGZvciB0aGlzIHNlcnZpY2UuXG4gICAqIEBwYXJhbSBrZXkgVGhlIGVudGl0eSBrZXkuXG4gICAqL1xuICBwdWJsaWMgZW50aXR5KCk6IE9EYXRhU2luZ2xldG9uUmVzb3VyY2U8VD4ge1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5zaW5nbGV0b24odGhpcy5uYW1lLCB0aGlzLmFwaU5hbWVPckVudGl0eVR5cGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGFjaCBhbiBleGlzdGluZyBtb2RlbCB0byB0aGlzIHNlcnZpY2UuXG4gICAqIEBwYXJhbSBtb2RlbCBUaGUgbW9kZWwgdG8gYXR0YWNoLlxuICAgKi9cbiAgcHVibGljIGF0dGFjaDxNIGV4dGVuZHMgT0RhdGFNb2RlbDxUPj4obW9kZWw6IE0pIHtcbiAgICBtb2RlbC5hdHRhY2godGhpcy5lbnRpdHkoKSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHNjaGVtYSBmb3IgdGhlIHNpbmdsZXRvbi5cbiAgICovXG4gIGdldCBzaW5nbGV0b25TY2hlbWEoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpLmZpbmRFbnRpdHlTZXQodGhpcy5uYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIHNpbmdsZXRvbiBlbnRpdHlcbiAgICogQHBhcmFtIGF0dHJzIFRoZSBhdHRyaWJ1dGVzIGZvciB0aGUgZW50aXR5LlxuICAgKiBAcGFyYW0gZXRhZyBUaGUgZXRhZyBmb3IgdGhlIGVudGl0eS5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIHRoZSByZXF1ZXN0LlxuICAgKi9cbiAgcHVibGljIHVwZGF0ZShcbiAgICBhdHRyczogUGFydGlhbDxUPixcbiAgICBvcHRpb25zPzogT0RhdGFPcHRpb25zICYgeyBldGFnPzogc3RyaW5nIH0sXG4gICk6IE9ic2VydmFibGU8T0RhdGFFbnRpdHk8VD4+IHtcbiAgICBjb25zdCByZXMgPSB0aGlzLmVudGl0eSgpO1xuICAgIHJldHVybiByZXMudXBkYXRlKGF0dHJzLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXRjaCB0aGUgc2luZ2xldG9uIGVudGl0eVxuICAgKiBAcGFyYW0gYXR0cnMgVGhlIGF0dHJpYnV0ZXMgZm9yIHRoZSBlbnRpdHkuXG4gICAqIEBwYXJhbSBldGFnIFRoZSBldGFnIGZvciB0aGUgZW50aXR5LlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyBmb3IgdGhlIHJlcXVlc3QuXG4gICAqL1xuICBwdWJsaWMgcGF0Y2goXG4gICAgYXR0cnM6IFBhcnRpYWw8VD4sXG4gICAgb3B0aW9ucz86IE9EYXRhT3B0aW9ucyAmIHsgZXRhZz86IHN0cmluZyB9LFxuICApOiBPYnNlcnZhYmxlPE9EYXRhRW50aXR5PFQ+PiB7XG4gICAgY29uc3QgcmVzID0gdGhpcy5lbnRpdHkoKTtcbiAgICByZXR1cm4gcmVzLm1vZGlmeShhdHRycywgb3B0aW9ucyk7XG4gIH1cbn1cbiJdfQ==