-
Notifications
You must be signed in to change notification settings - Fork 1
Data Modelling, How to Generate a Model
Julio Carneiro edited this page Nov 29, 2017
·
2 revisions
One of the key things that enables, and eases, interfacing between Angular and 4D is the ability to map a 4D Database Structure to JS44D Data Models. JS44D Data Models are extensions to the FourDModel service class.
4D RESTApi Component includes a special method that can be used to generate FourDModel classes for each table on a 4D Structure. Method REST_ExportDataModel can be run from a host database and it'll present a popup for selecting a 4D Table, or all tables, and it'll generate the corresponding FourDModel class(es). A simple way to use it is to create a dummy new method, put a call to REST_ExportDataModel and run that method:
The Typescript class generated by that method (for the table above) will look something like this:
import { FourDModel } from 'js44D';
export class Location extends FourDModel {
public static kTABLE:string = 'Location';
public static kRecordID:string = 'Location.RecordID';
public static kCreationDate:string = 'Location.CreationDate';
public static kLastUpdateDate:string = 'Location.LastUpdateDate';
public static kTimeStamp:string = 'Location.TimeStamp';
public static kLocationName:string = 'Location.LocationName';
public static kCity:string = 'Location.City';
public static kCountry:string = 'Location.Country';
public static kGeoLocation:string = 'Location.GeoLocation';
public static kLocale:string = 'Location.Locale';
tableName:string = 'Location';
tableNumber:number = 2;
primaryKey_:string = 'RecordID';
fields:Array<any> = [
{name:'RecordID', longname:'Location.RecordID', type:'number', required:true, readonly:true, indexed:true, unique:true},
{name:'CreationDate', longname:'Location.CreationDate', type:'Date'},
{name:'LastUpdateDate', longname:'Location.LastUpdateDate', type:'Date'},
{name:'TimeStamp', longname:'Location.TimeStamp', type:'string', length:255},
{name:'LocationName', longname:'Location.LocationName', type:'string', length:255, indexed:true},
{name:'City', longname:'Location.City', type:'string', length:255},
{name:'Country', longname:'Location.Country', type:'string', length:255},
{name:'GeoLocation', longname:'Location.GeoLocation', type:'string', length:255},
{name:'Locale', longname:'Location.Locale', type:'string', length:5}
];
get RecordID():number {return this.get('RecordID');}
set RecordID(v:number) {this.set('RecordID',v);}
get CreationDate():Date {return this.get('CreationDate');}
set CreationDate(v:Date) {this.set('CreationDate',new Date(<any>v));}
get LastUpdateDate():Date {return this.get('LastUpdateDate');}
set LastUpdateDate(v:Date) {this.set('LastUpdateDate',new Date(<any>v));}
get TimeStamp():string {return this.get('TimeStamp');}
set TimeStamp(v:string) {this.set('TimeStamp',v);}
get LocationName():string {return this.get('LocationName');}
set LocationName(v:string) {this.set('LocationName',v);}
get City():string {return this.get('City');}
set City(v:string) {this.set('City',v);}
get Country():string {return this.get('Country');}
set Country(v:string) {this.set('Country',v);}
get GeoLocation():string {return this.get('GeoLocation');}
set GeoLocation(v:string) {this.set('GeoLocation',v);}
get Locale():string {return this.get('Locale');}
set Locale(v:string) {this.set('Locale',v);}
}