soda-angular
Version:
Socrata SODA client for Angular
46 lines (45 loc) • 1.44 kB
JavaScript
import { FluentQuery } from '../fluent-query/fluent-query';
import { resourceMetadataKey } from './soda-dataset-decorator';
export class SodaResource {
constructor(TDatasetClass, context) {
const resourceIdMetadata = Reflect.getMetadata(resourceMetadataKey, TDatasetClass);
if (!resourceIdMetadata) {
throw new Error(`Class '${TDatasetClass.name}' must have a SodaDatasetId decorator`);
}
this.Id = resourceIdMetadata;
this.Context = context;
}
getUrl() {
return `${this.Context.Host}resource/${this.Id}.json`;
}
observable() {
return this.Context.Client.getResource(this);
}
get(query) {
return this.Context.Client.getResource(this, query);
}
select(column) {
return this.createQuery().select(column);
}
where(column) {
return this.createQuery().where(column);
}
location(column) {
return this.createQuery().location(column);
}
geometry(column) {
return this.createQuery().geometry(column);
}
limit(records) {
return this.createQuery().limit(records);
}
offset(records) {
return this.createQuery().offset(records);
}
orderBy(column, descending) {
return this.createQuery().orderBy(column, descending);
}
createQuery() {
return new FluentQuery(this);
}
}