Skip to content

SpiderDan98/json-model

Repository files navigation

json model

A json model creator for client and server side.

Install

yarn add -D @spiderdan98/json-model

Example model

import createModel from "@spiderdan98/json-model";
import Relationship from "/path/to/relationship/model";

export const USER_TYPE = "users";

const Model = createModel<{
  type: typeof USER_TYPE;
  name: string;
  email: string;
  relationshipNames?: string[];
  relationship: Relationship[];
}>();

class User extends Model {
  lowerName = this.name.toLowerCase(),
}

export default User;

Example model usage

import { setModels } from "@spiderdan98/json-model";
import Relationship from "/path/to/relationship/model";
import User from "/path/to/user/model";

const json = {
  type: "users",
  name: "SpiderDan98",
  email: "[email protected]",
  relationshipNames: ["relationship"],
  relationship: {
    ...
  },
};

// Register relationship models globally
setModels({
  relationship: Relationship,
});

const user = User.create(json, {
  // Register relationship models on create
  relationship: Relationship,
});

console.log(user.name); // SpiderDan98
console.log(user.lowerName); // spiderdan98
console.log(user.relationship); // Relationship model

const users = User.create([json]);

console.log(users[0].name); // SpiderDan98
console.log(users[0].lowerName); // spiderdan98
console.log(users[0].relationship); // Relationship model

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published