0.0.6 • Published 5 years ago

irrelon-schema-model v0.0.6

Weekly downloads
-
License
ISC
Repository
-
Last release
5 years ago

Irrelon Schema Model

A library that extends the functionality of Irrelon Schema (npm i irrelon-schema) and adds the ability to instantiate, return and update models based on existing schemas.

If you use "Schema" from this library it also extends the Schema class from irrelon-schema and adds the ability to create a new model constructor based on a schema e.g.

const {Schema} = require("irrelon-model-schema");
const UserSchema = new Schema({
	"name": {
		"type": String,
		"required": true
	},
	"age": {
		"type": Number,
		"required": false
	}
});

// The extended schema class from irrelon-model-schema supports
// setting a REST endpoint that should be used for CRUD manipulation
// of models
UserSchema.endPoint("/api/v1/user");

// The extended schema class also supports specifying an API object
// that exposes CRUD methods that implement the API interface described
// below in this document. The schema can use the API interface to call
// the REST endpoint via HTTP/s in order to apply CRUD operations.
UserSchema.api({
	// C(RUD)
	post: (url, data, options) => {
		Promise.resolve({
			err: {
				msg: "",
				token: "",
				details: {}
			},
			data: {},
			status: 200
		});
	},
	
	// (C)R(UD)
	get: () => {},
	
	// (CR)U(D)
	put: () => {},
	patch: () => {},
	
	// (CRU)D
	delete: () => {}
});

// Create a model constructor
const UserModel = UserSchema.model();

// Now we can get a user by id through the model
const myUser = await UserModel.findById(1);

// myUser is now an instance of UserModel with the data from
// the API endpoint matching the ID: 1 - if there was an error
// then the myUser instance will not be populated and will
// be in an error state. You can check this by calling
// UserModel.error(myUser)
myUser.name = "My New Name";

// Now we've modified the name, let's save it back to the API
// internally this will call the API patch method
myUser.save().then((response) => {
	// Check response and do whatever application logic you like
	// response conforms to the successResponse or failureResponse
	// schemas.
});

// If we want to overwrite (PUT) the model instead of partial
// updating (PATCH) we use the model method "overwrite()" instead:
myUser.overwrite().then((response) => {
	// Check response and do whatever application logic you like
	// response conforms to the successResponse or failureResponse
    // schemas.
});
0.0.6

5 years ago

0.0.5

5 years ago

0.0.4

5 years ago

0.0.3

5 years ago

0.0.2

5 years ago

0.0.1

5 years ago