@@ -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()
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user