@statezero/core
Version:
The type-safe frontend client for StateZero - connect directly to your backend models with zero boilerplate
72 lines (71 loc) • 2.71 kB
JavaScript
/**
* This file was auto-generated. Do not make direct changes to the file.
*/
import { Model, Manager, QuerySet, getModelClass } from '../../../../src';
import { wrapReactiveModel } from '../../../../src';
import schemaData from './comprehensivemodel.schema.json';
/**
* Model-specific QuerySet implementation
*/
export class ComprehensiveModelQuerySet extends QuerySet {
}
/**
* Model-specific Manager implementation
*/
export class ComprehensiveModelManager extends Manager {
constructor(ModelClass) {
super(ModelClass, ComprehensiveModelQuerySet);
}
newQuerySet() {
return new ComprehensiveModelQuerySet(this.ModelClass);
}
}
/**
* Implementation of the ComprehensiveModel model
*/
export class ComprehensiveModel extends Model {
constructor(data) {
ComprehensiveModel.validateFields(data);
super(data);
// Define getters and setters for all fields
this._defineProperties();
return wrapReactiveModel(this);
}
/**
* Define property getters and setters for all model fields
* @private
*/
_defineProperties() {
// For each field, define a property that gets/sets from internal storage
ComprehensiveModel.fields.forEach(field => {
Object.defineProperty(this, field, {
get: function () {
return this.getField(field);
},
set: function (value) {
this.setField(field, value);
},
enumerable: true, // Make sure fields are enumerable for serialization
configurable: true
});
});
// Add a special read-only getter for the repr field
Object.defineProperty(this, 'repr', {
get: function () {
return this.getField('repr');
},
enumerable: true, // Make sure repr is enumerable
configurable: true
});
}
}
// Bind this model to its backend
ComprehensiveModel.configKey = 'default';
ComprehensiveModel.modelName = 'django_app.comprehensivemodel';
ComprehensiveModel.primaryKeyField = 'id';
ComprehensiveModel.objects = new ComprehensiveModelManager(ComprehensiveModel);
ComprehensiveModel.fields = ['id', 'char_field', 'text_field', 'int_field', 'bool_field', 'datetime_field', 'decimal_field', 'json_field', 'money_field_currency', 'money_field', 'nullable_money_field_currency', 'nullable_money_field', 'related'];
ComprehensiveModel.schema = schemaData;
ComprehensiveModel.relationshipFields = new Map([
['related', { 'ModelClass': () => getModelClass('django_app.deepmodellevel1', 'default'), 'relationshipType': 'foreign-key' }]
]);