mirror of
https://github.com/flarum/framework.git
synced 2025-02-09 05:07:13 +08:00
42 lines
805 B
JavaScript
42 lines
805 B
JavaScript
export default class Routes {
|
|
type;
|
|
attributes = [];
|
|
hasOnes = [];
|
|
hasManys = [];
|
|
|
|
constructor(type, model = null) {
|
|
this.type = type;
|
|
this.model = model;
|
|
}
|
|
|
|
attribute(name) {
|
|
this.attributes.push(name);
|
|
|
|
return this;
|
|
}
|
|
|
|
hasOne(type) {
|
|
this.hasOnes.push(type);
|
|
|
|
return this;
|
|
}
|
|
|
|
hasMany(type) {
|
|
this.hasManys.push(type);
|
|
|
|
return this;
|
|
}
|
|
|
|
extend(app, extension) {
|
|
if (this.model) {
|
|
app.store.models[this.type] = this.model;
|
|
}
|
|
|
|
const model = app.store.models[this.type];
|
|
|
|
this.attributes.forEach((name) => (model.prototype[name] = model.attribute(name)));
|
|
this.hasOnes.forEach((name) => (model.prototype[name] = model.hasOne(name)));
|
|
this.hasManys.forEach((name) => (model.prototype[name] = model.hasMany(name)));
|
|
}
|
|
}
|