0.0.18 • Published 1 year ago

@pranaali/model-builder v0.0.18

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

Model Builder

Create and update data models dynamically by using Model Builder, integrated with MondoDB

APIs

createModel();

saveFields();

addField();

getDynamicModel();

getModelFields();

removeField();

Field Types

NameLabelType
textTextString
richTextRich TextString
numberNumberNumber
dateDate & TimeString
locationLocationObject
mediaMediaObject
booleanBooleanBoolean
arrayArrayArray
jsonJSON ObjectObject
referenceReferenceSchema.Types.ObjectId

Examples

Adding a Dynamic Model with name 'Student'

  const inputFields = [
    {
      title: 'First Name',
      fieldType: 'text',
      isRequired: 1,
      isSearchable: 1,
      isSortable: 1,
      max: 100,
    },
    {
      title: 'Last Name',
      fieldType: 'text',
      isRequired: 1,
      isSearchable: 1,
      isSortable: 1,
      max: 100,
    },
    {
      title: 'Country',
      fieldType: 'text',
      isRequired: 1,
      isSearchable: 1,
      isSortable: 1,
      max: 100,
    },
    {
      title: 'State',
      fieldType: 'text',
      isRequired: 1,
      isSearchable: 1,
      isSortable: 1,
      max: 100,
    },
    {
      title: 'City',
      fieldType: 'text',
      isRequired: 1,
      isSearchable: 1,
      isSortable: 1,
      max: 100,
    },
    {
      title: 'Area',
      fieldType: 'text',
      isRequired: 0,
      isSearchable: 1,
      isSortable: 1,
      max: 100,
    },
    {
      title: 'Postal Code',
      fieldType: 'text',
      isRequired: 1,
      isSearchable: 1,
      isSortable: 0,
      max: 8,
    },
    {
      title: 'Address Line 1',
      fieldType: 'text',
      isRequired: 1,
      isSearchable: 1,
      isSortable: 1,
      max: 100,
    },
    {
      title: 'Address Line 2',
      fieldType: 'text',
      isRequired: 0,
      isSearchable: 1,
      isSortable: 1,
      max: 100,
    },
  ];

  // Create a model entry, on time process
  const model = await createModel({ title: 'Student' });
  const modelId = model.id;


  // Save all fields, on time process
  const savedFields = await saveFields(modelId, inputFields);


  // Get the model with automatically generated schema
  const Student = await getDynamicModel(model.name, savedFields);

  // Payload to save
  const data = {
    firstName: 'John',
    lastName: 'Doe',
    country: 'IN',
    state: 'MP',
    city: 'Bhopal',
    area: 'Berasia Road',
    postalCode: '546410',
    addressLine1: 'Some Address',
    addressLine2: 'Some Another Address',
  };

  const newStudent = new Student(data);
  await newStudent.save();

Fetching Student Info from Dynamic model

// Get the model by model name
const Student = await getDynamicModel('student');

// Response from dynamic model
const result = await Student.find({ firstName: 'John' }).exec();

Create a Referenced model with name 'Category'

//Another set of model definition
 const fields = [
    {
      title: 'Name',
      fieldType: 'text',
      isRequired: 1,
      isSearchable: 1,
      isSortable: 1,
      max: 100,
    },
    {
      title: 'Student',
      fieldType: 'reference', // Here, Type is 'reference'
      referencedModel: 'Student',
    },
  ];

  //Creating a 'category' model
  const model = await createModel({ title: 'Category' });
  const modelId = model.id;

  const savedFields = await saveFields(modelId, fields);

  const Category = await getDynamicModel(model.name, savedFields);

  const data = {
    name: 'Popular Category',
    student: '63865598d8300ad48a9f5597', // Referenced field
  };

  const newCategory = new Category(data);
  await newCategory.save();
0.0.18

1 year ago

0.0.17

1 year ago

0.0.16

1 year ago

0.0.15

1 year ago

0.0.14

1 year ago

0.0.13

1 year ago

0.0.12

1 year ago

0.0.11

1 year ago

0.0.10

1 year ago

0.0.9

1 year ago

0.0.8

1 year ago

0.0.7

1 year ago

0.0.6

1 year ago

0.0.5

1 year ago

0.0.4

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago