1.0.11 • Published 9 months ago

easy-crud-backend v1.0.11

Weekly downloads
-
License
ISC
Repository
github
Last release
9 months ago

easy-crud-backend

This package help create fast basic curd api.

The package build on express.

use RouteCreator class to create new Route.

etch route contain few endpoints |method| route | function | |-| ------------------ | ------------------- | | get | /one/:id | getOne_get() | | get | /all | getAll_get() | | post | /one | addOne_post() | | put | /one/:id | updateOne_put() | | put | /many | updateMany_put() | | delete | /one/:id | deleteOne_delete() | | delete | /all | deleteAll_delete() |

example to simple usage

import { RouteCreator, FileRepository } from "easy-crud-backend";
import express from "express";

const PORT = 3010;
const app = express();

new RouteCreator(app, "car", new FileRepository("car"));

app.listen(PORT, () => {
  console.log("listening on http://localhost:" + PORT);
});

with mongoDb

const db = new MongoDbFactory("mongodb://localhost:27017/myDb_test1");
new RouteCreator(app, "person", db.createCollection("person"));

Use ExpressAppBuilder class for easy settings

const app = new ExpressAppBuilder().withAnyCors().withJson().withStatic("/public").build();

use fast creational functions instead of RouteCreator

// example 1
chooseRepository("mongoDb", { connectionString: "mongodb://localhost:27017/myDb_test1" });
createRoute(app, "person");

// example 2
chooseRepository("files");
createRoute(app, "person");

// example 3
createRouteInFile(app, "person");

// example 4
const connectionString = "mongodb://localhost:27017/myDb";
createRouteInMongoDb(app, "person", connectionString);

you can also extend RouteCreator class and change the logic

class CustomRouter extends RouteCreator<any> {
  constructor(type: string) {
    super(app, type, new FileRepository(type));
  }

  protected override getAll_get(): void {
    this.router.get("/", (req, res) => {
      res.json([{ test: "this is test" }]);
    });
  }
}

new CustomRouter(app, "person");

if you want to create a new endpoint you need to call the method in the constructor

class CustomRouter extends RouteCreator<any> {
  constructor(type: string) {
    super(app, type, new FileRepository(type));
    this.createMany();
  }

  createMany() {
    this.router.post("/many", (req, res) => {
      // logic...
    });
  }
}

Other things in this package

IBaseModel

base type of this package

export type IBaseModel = {
  id: string;
  type: string;
  version?: number;
};

all entities must have an id and a type property. in the FileRepository i take care of the version property. each time an entity is changed, the version is incremented


IRepository

this is an interface that represent the basic operations that you want to perform with database

implement this interface to create a repository and pass it as an argument to the constructor of RouteCreator

class MongoRepo implements IRepository<any> {
  get(id: string) {}
  getAll() {}
  update(data: any) {}
  create(data: any) {}
  delete(id: string) {}
  clear() {}
}

FileManager

// const fileManager = new FileManager<type>("./path/to/file", ".extension");
const fileManager = new FileManager<any>("./package"); // extension defaults to ".json"

// read the content of the file
const data = fileManager.load();
// override the content of the file
fileManager.save(data);

// check if a path exists
if (!fileManager.exists("./model")) {
  // create folder
  fileManager.makeFolder("./model");
}

GUID.new()

create new GUID id with this function

const id = GUID.new();
1.0.9

9 months ago

1.0.8

9 months ago

1.0.11

9 months ago

1.0.10

9 months ago

1.0.7

9 months ago

1.0.6

9 months ago

1.0.5

9 months ago

1.0.4

9 months ago

1.0.3

10 months ago

1.0.2

10 months ago

1.0.1

10 months ago

1.0.0

10 months ago