feat: add plugin controller
Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
parent
7ce0705d41
commit
9e650aa203
@ -16,15 +16,21 @@
|
|||||||
"registry": "https://repo.yumc.pw/repository/npm-hosted/"
|
"registry": "https://repo.yumc.pw/repository/npm-hosted/"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
"dev": "npx ts-node-dev --respawn --debounce=1500 src/index.ts",
|
||||||
"clean": "rimraf dist",
|
"clean": "rimraf dist",
|
||||||
"watch": "npx tsc --watch",
|
"watch": "npx tsc --watch",
|
||||||
"build": "yarn clean && npx tsc",
|
"build": "yarn clean && npx tsc",
|
||||||
"test": "echo \"Error: run tests from root\" && exit 1"
|
"test": "echo \"Error: run tests from root\" && exit 1"
|
||||||
},
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@cc-server/core": "^0.7.0",
|
||||||
|
"mongodb": "^3.4.1"
|
||||||
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@types/mongodb": "^3.3.14",
|
||||||
"reflect-metadata": "^0.1.13",
|
"reflect-metadata": "^0.1.13",
|
||||||
"rimraf": "^3.0.0",
|
"rimraf": "^3.0.0",
|
||||||
|
"ts-node-dev": "^1.0.0-pre.44",
|
||||||
"typescript": "^3.7.2"
|
"typescript": "^3.7.2"
|
||||||
},
|
}
|
||||||
"dependencies": {}
|
}
|
||||||
}
|
|
||||||
|
37
packages/manager/src/controller/Index.ts
Normal file
37
packages/manager/src/controller/Index.ts
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
import { DBClient } from '@cc-server/db'
|
||||||
|
import { lazyInjectNamed } from '@cc-server/ioc'
|
||||||
|
import { controller, get, post, requestParam, requestBody, Vaild, NotBlank } from '@cc-server/binding'
|
||||||
|
|
||||||
|
class Plugins {
|
||||||
|
@NotBlank()
|
||||||
|
name?: string;
|
||||||
|
author?: string;
|
||||||
|
version?: string;
|
||||||
|
source?: string;
|
||||||
|
type?: string;
|
||||||
|
dist?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
type distType = 'npm' | 'git' | 'src'
|
||||||
|
|
||||||
|
@controller('/plugin')
|
||||||
|
class PluginController {
|
||||||
|
@lazyInjectNamed(DBClient, Plugins.name.toLocaleLowerCase())
|
||||||
|
private client: DBClient<Plugins>
|
||||||
|
|
||||||
|
@get('/')
|
||||||
|
index() {
|
||||||
|
return this.client.find({});
|
||||||
|
}
|
||||||
|
|
||||||
|
@get('/:id')
|
||||||
|
details(@requestParam("id") id: string) {
|
||||||
|
return this.client.findOneById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@post('/')
|
||||||
|
add(@requestBody() @Vaild() model: Plugins) {
|
||||||
|
return this.client.insertOne(model);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
import * as path from 'path'
|
||||||
|
import { Db, MongoClient } from 'mongodb'
|
||||||
|
import { DBClient } from '@cc-server/db'
|
||||||
|
import { interfaces } from '@cc-server/ioc'
|
||||||
|
import { CcServerBoot } from '@cc-server/core'
|
||||||
|
import { MongoCollection, TYPE } from '@cc-server/db-mongo';
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
let server = new CcServerBoot();
|
||||||
|
let collectionCache = {};
|
||||||
|
server.container.bind(DBClient).toDynamicValue((context: interfaces.Context) => {
|
||||||
|
let name = context.currentRequest.target.getNamedTag().value;
|
||||||
|
if (!name) { return null }
|
||||||
|
if (!collectionCache[name]) { collectionCache[name] = new MongoCollection(context.container.get<Db>(TYPE.DB).collection(name)) }
|
||||||
|
return collectionCache[name];
|
||||||
|
})
|
||||||
|
let client = await MongoClient.connect("mongodb://192.168.2.5:27017", { useNewUrlParser: true, connectTimeoutMS: 10000 })
|
||||||
|
server.container.bind("MONGO_DB").toConstantValue(client.db("mspc"));
|
||||||
|
server.scan(path.join(__dirname, "controller")).start()
|
||||||
|
}
|
||||||
|
|
||||||
|
main()
|
Loading…
Reference in New Issue
Block a user