UNPKG

create-mock-backend

Version:

This is npx starter package for installing your favourite backend template for mockBee.

86 lines (79 loc) 2.69 kB
import { Server, Model, RestSerializer } from "miragejs"; import { posts } from "./backend/db/posts"; import { users } from "./backend/db/users"; import { loginHandler, signupHandler, } from "./backend/controllers/AuthController"; import { createPostHandler, getAllpostsHandler, getPostHandler, deletePostHandler, editPostHandler, likePostHandler, dislikePostHandler, getAllUserPostsHandler, } from "./backend/controllers/PostController"; import { bookmarkPostHandler, followUserHandler, getAllUsersHandler, getUserHandler, removePostFromBookmarkHandler, unfollowUserHandler, editUserHandler, } from "./backend/controllers/UserController"; import { initialUserData } from "./backend/utils/authUtils"; export function makeServer({ environment = "development" } = {}) { let server = new Server({ serializers: { application: RestSerializer, }, environment, // TODO: Use Relationships to have named relational Data models: { post: Model, user: Model, }, // Runs on the start of the server seeds(server) { users.forEach((item) => server.create("user", { ...item, ...initialUserData }) ); posts.forEach((item) => server.create("post", { ...item })); }, routes() { this.namespace = "api"; // auth routes (public) this.post("/auth/signup", signupHandler.bind(this)); this.post("/auth/login", loginHandler.bind(this)); // post routes (public) this.get("/posts", getAllpostsHandler.bind(this)); this.get("/posts/:postId", getPostHandler.bind(this)); this.get("/posts/:username", getAllUserPostsHandler.bind(this)); // post routes (private) this.post("/posts", createPostHandler.bind(this)); this.delete("/posts/:postId", deletePostHandler.bind(this)); this.post("/posts/edit/:postId", editPostHandler.bind(this)); this.post("/posts/like/:postId", likePostHandler.bind(this)); this.post("/posts/dislike/:postId", dislikePostHandler.bind(this)); // user routes (public) this.get("/users", getAllUsersHandler.bind(this)); this.get("/users/:userId", getUserHandler.bind(this)); // user routes (private) this.post("users/edit", editUserHandler.bind(this)); this.post("/users/bookmark/:postId/", bookmarkPostHandler.bind(this)); this.post( "/users/remove-bookmark/:postId/", removePostFromBookmarkHandler.bind(this) ); this.post("/users/follow/:followUserId/", followUserHandler.bind(this)); this.post( "/users/unfollow/:followUserId/", unfollowUserHandler.bind(this) ); }, }); return server; }