blob: 0af00ffa4463dcf3d8b916eed5eff8233ffa1b41 [file] [log] [blame]
Matteo Scandolocb466ed2017-01-04 17:16:24 -08001import {IXosModelDefsField} from '../../core/services/helpers/config.helpers';
Matteo Scandolo828d1e82017-01-17 14:49:38 -08002import {IXosAppConfig} from '../../../index';
Matteo Scandolof2c3ed62016-12-15 14:32:50 -08003
Matteo Scandolo1aee1982017-02-17 08:33:23 -08004// Models interfaces
5export interface IXosModelDefsField {
Matteo Scandolof2c3ed62016-12-15 14:32:50 -08006 name: string;
Matteo Scandolo1aee1982017-02-17 08:33:23 -08007 type: string;
8 validators?: any;
9 hint?: string;
10 relation?: {
11 model: string;
12 type: string;
13 };
Matteo Scandolof2c3ed62016-12-15 14:32:50 -080014}
15
Matteo Scandolo1aee1982017-02-17 08:33:23 -080016export interface IXosModelDefsRelation {
17 model: string; // model name
18 type: string; // relation type
Matteo Scandolo5d962a32017-08-01 18:16:14 -070019 on_field: string; // the field that is containing the relation
Matteo Scandolof2c3ed62016-12-15 14:32:50 -080020}
21
Matteo Scandolo1aee1982017-02-17 08:33:23 -080022export interface IXosModeldef {
23 fields: IXosModelDefsField[];
24 relations?: IXosModelDefsRelation[];
25 name: string;
26 app: string;
27}
28
29export interface IXosModeldefsService {
30 get(): Promise<IXosModeldef[]>;
31}
32
33export class XosModeldefsService implements IXosModeldefsService {
Matteo Scandolo828d1e82017-01-17 14:49:38 -080034
35 static $inject = ['$http', '$q', 'AppConfig'];
36
Matteo Scandolof2c3ed62016-12-15 14:32:50 -080037 constructor(
38 private $http: angular.IHttpService,
39 private $q: angular.IQService,
Matteo Scandolo828d1e82017-01-17 14:49:38 -080040 private AppConfig: IXosAppConfig
Matteo Scandolof2c3ed62016-12-15 14:32:50 -080041 ) {
42 }
43
44 public get(): Promise<any> {
45 const d = this.$q.defer();
Matteo Scandolo1aee1982017-02-17 08:33:23 -080046 this.$http.get(`${this.AppConfig.apiEndpoint}/modeldefs`)
47 .then((res: any) => {
48 d.resolve(res.data.items);
Matteo Scandolof2c3ed62016-12-15 14:32:50 -080049 })
50 .catch(e => {
51 d.reject(e);
52 });
53 return d.promise;
54 }
55}