mirror of
https://github.com/flarum/framework.git
synced 2025-02-25 09:33:27 +08:00
41 lines
796 B
JavaScript
41 lines
796 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));
|
||
|
}
|
||
|
}
|