Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
"title": "Sample Petstore Api",
"description": "Sample Petstore Api",
"termsOfService": "None",
"license": {
"name": "MIT"
}
},
"servers": [{
"url": "http://127.0.0.1",
"description": "development server"
}],
paths: {}
})
api.configure(new RestTransport())
const schema = SchemaBuilder.emptySchema().addString("id").addString("myString").addNumber("myNumber")
const db = await configureMongo()
const pipeline = new PipelineMongoDb(schema, "test", db)
await pipeline.delete({} as any)
await pipeline.create([{id: "hop", myString: "test2", myNumber: 1}])
await pipeline.create([{myString: "test3", myNumber: 2}])
await pipeline.create([{myString: "toto", myNumber: 70}])
await pipeline.patch({id: "hop"}, {myString: "test4"})
console.log("READ id 'hop':", await pipeline.read({id: "hop"}))
await pipeline.delete({id: "hop"})
console.log("READ all:", await pipeline.read({}))
api.use(pipeline, "test")
// start the server
let server = app.listen(process.env.PORT || 80, (error: any) => {
next();
});
// Declare our Api with its general information
let api = new Api(app, {
"openapi": "3.0.0",
"info": {
"version": "1.0.0",
"title": "An API"
},
paths: {}
});
api.configure(new RestTransport())
// Declare a Schema for our "entity"
let aModelSchema = SchemaBuilder.emptySchema().addString("id").addString("data");
// Define the pipeline, it stores data into memory directly
let aPipeline = new PipelineInMemory(aModelSchema);
//.pipe(...) // Add a pipeline to extend the behavior
// Use the pipeline in the api. It will add all the routes and compute Open Api spec
api.use(aPipeline, "model");
// Start the server
app.listen(process.env.PORT || 80);
protected defaultSchema(modelSchemaBuilder: SchemaBuilder) {
return {
model: modelSchemaBuilder,
createValues: modelSchemaBuilder.clone().setOptionalProperties(["id"]),
createOptions: SchemaBuilder.emptySchema(),
createMeta: SchemaBuilder.emptySchema(),
readQuery: modelSchemaBuilder.clone().transformPropertiesToArray().toOptionals(),
readOptions: SchemaBuilder.emptySchema(),
readMeta: SchemaBuilder.emptySchema(),
replaceValues: modelSchemaBuilder.clone().omitProperties(["id"]),
replaceOptions: SchemaBuilder.emptySchema(),
replaceMeta: SchemaBuilder.emptySchema(),
patchQuery: modelSchemaBuilder.clone().pickProperties(["id"]).transformPropertiesToArray(),
patchValues: modelSchemaBuilder.clone().omitProperties(["id"]).toDeepOptionals(),
patchOptions: SchemaBuilder.emptySchema(),
patchMeta: SchemaBuilder.emptySchema(),
deleteQuery: modelSchemaBuilder.clone().pickProperties(["id"]).transformPropertiesToArray(),
deleteOptions: SchemaBuilder.emptySchema(),
deleteMeta: SchemaBuilder.emptySchema(),
}
}
model: modelSchemaBuilder,
createValues: modelSchemaBuilder.clone().setOptionalProperties(["id"]),
createOptions: SchemaBuilder.emptySchema(),
createMeta: SchemaBuilder.emptySchema(),
readQuery: modelSchemaBuilder.clone().transformPropertiesToArray().toOptionals(),
readOptions: SchemaBuilder.emptySchema(),
readMeta: SchemaBuilder.emptySchema(),
replaceValues: modelSchemaBuilder.clone().omitProperties(["id"]),
replaceOptions: SchemaBuilder.emptySchema(),
replaceMeta: SchemaBuilder.emptySchema(),
patchQuery: modelSchemaBuilder.clone().pickProperties(["id"]).transformPropertiesToArray(),
patchValues: modelSchemaBuilder.clone().omitProperties(["id"]).toDeepOptionals(),
patchOptions: SchemaBuilder.emptySchema(),
patchMeta: SchemaBuilder.emptySchema(),
deleteQuery: modelSchemaBuilder.clone().pickProperties(["id"]).transformPropertiesToArray(),
deleteOptions: SchemaBuilder.emptySchema(),
deleteMeta: SchemaBuilder.emptySchema(),
}
}
schemaBuilderCreateValuesSchemaBuilder = (s) => this.notImplementedMethods.indexOf("create") !== -1 ? SchemaBuilder.emptySchema() : this.pipeline.schemaBuilders.createValues
schemaBuilderCreateOptionsSchemaBuilder = (s) => this.notImplementedMethods.indexOf("create") !== -1 ? SchemaBuilder.emptySchema() : this.pipeline.schemaBuilders.createOptions
protected defaultSchema(modelSchemaBuilder: SchemaBuilder) {
return {
model: modelSchemaBuilder,
createValues: modelSchemaBuilder.clone().setOptionalProperties(["id"]),
createOptions: SchemaBuilder.emptySchema(),
createMeta: SchemaBuilder.emptySchema(),
readQuery: modelSchemaBuilder.clone().transformPropertiesToArray().toOptionals(),
readOptions: SchemaBuilder.emptySchema(),
readMeta: SchemaBuilder.emptySchema(),
replaceValues: modelSchemaBuilder.clone().omitProperties(["id"]),
replaceOptions: SchemaBuilder.emptySchema(),
replaceMeta: SchemaBuilder.emptySchema(),
patchQuery: modelSchemaBuilder.clone().pickProperties(["id"]).transformPropertiesToArray(),
patchValues: modelSchemaBuilder.clone().omitProperties(["id"]).toDeepOptionals(),
patchOptions: SchemaBuilder.emptySchema(),
patchMeta: SchemaBuilder.emptySchema(),
deleteQuery: modelSchemaBuilder.clone().pickProperties(["id"]).transformPropertiesToArray(),
deleteOptions: SchemaBuilder.emptySchema(),
deleteMeta: SchemaBuilder.emptySchema(),
}
}
import { SchemaBuilder } from "@serafin/schema-builder"
export var authorSchemaBuilder = SchemaBuilder.emptySchema({ title: "Author", description: "Author object." })
.addString("id", { description: "Author identifier" })
.addString("firstName", { description: "Author first name" })
.addString("lastName", { description: "Author last name" }, false)
protected defaultSchema(modelSchemaBuilder: SchemaBuilder) {
return {
model: modelSchemaBuilder,
createValues: modelSchemaBuilder.clone().setOptionalProperties(["id"]),
createOptions: SchemaBuilder.emptySchema(),
createMeta: SchemaBuilder.emptySchema(),
readQuery: modelSchemaBuilder.clone().transformPropertiesToArray().toOptionals(),
readOptions: SchemaBuilder.emptySchema(),
readMeta: SchemaBuilder.emptySchema(),
replaceValues: modelSchemaBuilder.clone().omitProperties(["id"]),
replaceOptions: SchemaBuilder.emptySchema(),
replaceMeta: SchemaBuilder.emptySchema(),
patchQuery: modelSchemaBuilder.clone().pickProperties(["id"]).transformPropertiesToArray(),
patchValues: modelSchemaBuilder.clone().omitProperties(["id"]).toDeepOptionals(),
patchOptions: SchemaBuilder.emptySchema(),
patchMeta: SchemaBuilder.emptySchema(),
deleteQuery: modelSchemaBuilder.clone().pickProperties(["id"]).transformPropertiesToArray(),
deleteOptions: SchemaBuilder.emptySchema(),
deleteMeta: SchemaBuilder.emptySchema(),
}
}
protected defaultSchema(modelSchemaBuilder: SchemaBuilder) {
return {
model: modelSchemaBuilder,
createValues: modelSchemaBuilder.clone().setOptionalProperties(["id"]),
createOptions: SchemaBuilder.emptySchema(),
createMeta: SchemaBuilder.emptySchema(),
readQuery: modelSchemaBuilder.clone().transformPropertiesToArray().toOptionals(),
readOptions: SchemaBuilder.emptySchema(),
readMeta: SchemaBuilder.emptySchema(),
replaceValues: modelSchemaBuilder.clone().omitProperties(["id"]),
replaceOptions: SchemaBuilder.emptySchema(),
replaceMeta: SchemaBuilder.emptySchema(),
patchQuery: modelSchemaBuilder.clone().pickProperties(["id"]).transformPropertiesToArray(),
patchValues: modelSchemaBuilder.clone().omitProperties(["id"]).toDeepOptionals(),
patchOptions: SchemaBuilder.emptySchema(),
patchMeta: SchemaBuilder.emptySchema(),
deleteQuery: modelSchemaBuilder.clone().pickProperties(["id"]).transformPropertiesToArray(),
deleteOptions: SchemaBuilder.emptySchema(),
deleteMeta: SchemaBuilder.emptySchema(),
}
}
return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
let schemaBuilder: SchemaBuilder<{}>;
let schemaBuilderName = `_${propertyKey}WrapperSchemaBuilder`;
if (!target.hasOwnProperty(schemaBuilderName)) {
target[schemaBuilderName] = SchemaBuilder.emptySchema()
}
schemaBuilder = target[schemaBuilderName]
if (required) {
schemaBuilder.addProperty(name, new SchemaBuilder(schema));
} else {
schemaBuilder.addOptionalProperty(name, new SchemaBuilder(schema));
}
}
}