schema-driver

1.0.0 • Public • Published

close source and testing.

Example

let {Schema,Plugin}=require("schema-driver");

new Schema({
	properties:{
		billing_address:{
			type:"string"
		}
	},
	title:"address-schema",
	type:"object"
},true);

new Schema({
	properties:{
		address:{
			$ref:"%addressSchema%"
		},
		job:{
			type:"string"
		},
		name:{
			type:"string"
		}
	},
	title:"user-schema",
	type:"object"
},true);

const ResponseSchema=new Schema({
	properties:{
		code:{
			type:"string"
		},
		message:{
			type:"string"
		},
		result:{
			$ref:"%userSchema%"
		}
	},
	type:"object"
});

const data=ResponseSchema.mould({
	code:"0001",
	message:"success",
	result:{
		address:{
			billing_address:"555 Debtor's Lane"
		},
		job:"artist",
		name:"Van"
	}
},{
	variables:{
		addressSchema:"address-schema",
		userSchema:"user-schema"
	}
});

console.log(data);

console.log(JSON.stringify(new Schema({
	properties:{
		code:{
			type:"string"
		},
		message:{
			type:"string"
		},
		result:{
			$ref:"user-schema"
		}
	},
	type:"object",
}).compile({
	variables:{
		addressSchema:"address-schema",
		userSchema:"user-schema"
	}
}).mould({
	code:"0001",
	message:"success",
	result:{
		address:{
			billing_address:"555 Debtor's Lane"
		},
		job:"artist",
		name:"Van"
	}
}),null,2));


ResponseSchema.pipeline({
	code:"0001",
	message:"success",
	result:{
		address:{
			billing_address:"555 Debtor's Lane"
		},
		job:"artist",
		name:"Van"
	}
},{
	variables:{
		addressSchema:"address-schema",
		userSchema:"user-schema"
	}
},[Plugin.register("tmp-schema"),Plugin.ajv(),Plugin.mingo((resolve,reject,output,mingo)=>{
	const agg=new mingo.Aggregator([
		{'$project':{"address":"$result.address.billing_address"}},
	]);
	const newData=agg.run([output]);
	return newData[0].address;
})]).then((output)=>{
	console.log(output);

	console.log(Schema.reference("tmp-schema"));
}).catch((e)=>console.error(e));

Package Sidebar

Install

npm i schema-driver

Weekly Downloads

3

Version

1.0.0

License

MIT

Unpacked Size

21.4 kB

Total Files

19

Last publish

Collaborators

  • sitorhy