How to use @serafin/schema-builder - 10 common examples

To help you get started, we’ve selected a few @serafin/schema-builder examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github serafin-labs / serafin / src / example / mongodb / index.ts View on Github external
"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) => {
github serafin-labs / serafin / src / example / basic / index.ts View on Github external
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);
github serafin-labs / serafin / src / serafin / pipeline / PipelineAbstract.ts View on Github external
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(),
        }
    }
github serafin-labs / serafin / src / serafin / pipeline / PipelineAbstract.ts View on Github external
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(),
        }
    }
github serafin-labs / serafin / src / pipe / NotImplemented.ts View on Github external
    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
github serafin-labs / serafin / src / serafin / pipeline / PipelineAbstract.ts View on Github external
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(),
        }
    }
github serafin-labs / serafin / src / example / library / model / Author.ts View on Github external
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)
github serafin-labs / serafin / src / serafin / pipeline / PipelineAbstract.ts View on Github external
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(),
        }
    }
github serafin-labs / serafin / src / serafin / pipeline / PipelineAbstract.ts View on Github external
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(),
        }
    }
github serafin-labs / serafin / src / serafin / pipeline / decorator / Result.ts View on Github external
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));
        }
    }
}

@serafin/schema-builder

A Typescript JSON Schema library that creates a schema and its type at the same time

MIT
Latest version published 6 months ago

Package Health Score

59 / 100
Full package analysis