(async () => {
@APIController()
class SubApiController extends Controller {
@Action()
public async subIndex() {
return 'This is sub-index'
}
}
@APIController({indexAction: 'api-index'})
class ApiRootController extends Controller {
@Action({method: 'ALL'})
public async apiIndex(req, res, actionParams) {
return 'This is api index'
}
@Action({
method: 'POST', acceptParam: false, schema: {
query: {
name: String.required(),
age: Number.required()
}, body: {
baby: Boolean.required()
}
}
})
public async apiSchema(req, res, actionParams) {
console.log(actionParams)
}
@Upload()
public async apiUpload(req, res, files) {
console.log(files)
return 'Upload success'
}
@Download()
public async apiDownload(req, res, callbackFn) {
callbackFn((err) => {
if (err) {
console.error(err)
} else {
console.log('File download done')
}
})
return './test/files/test.jpeg'
}
@SubController({acceptParam: false})
public async subApiController() {
/**
* Access sub api controller
*/
return SubApiController
}
}
class Tester {
public num: number;
constructor(config: { num: number }) {
this.num = config.num
}
public getNum(): number {
return this.num
}
}
class TestComponent extends Component<Tester> {
public coreClass(): Constructor<Tester> {
return Tester
}
protected beforeMount(): void {
console.log('before mount')
}
protected afterMount(): void {
console.log('after mount')
}
public async initialize(core: Tester): Promise<Tester> {
return core
}
}
await createApplication({
name: '应用程序名称',
bootstrap: {
components: {
tester: {
class: TestComponent,
config: {num: 1024}
}
},
params: {
author: 'Handsome boy',
age: 'I do not tell you'
},
path: {
yourHeart: '/usr/secret/heart'
},
database: {
type: 'mysql',
host: 'localhost',
port: 3306,
username: 'root',
password: '123456',
database: 'erin_example_db',
entities: [
`${path.resolve(__dirname, '../')}/entities/**/*`
],
synchronize: true
},
api: {
port: 8080,
hostname: '0.0.0.0',
rootController: ApiRootController
},
rpc: {
RpcServices: [],
token: 'erin-token',
master: true
}
}
})
//Application launched
console.log(Application.Components.tester.getNum() === 1024)
})()