Files
Dwinzo-Backend-V0.0/src/shared/services/version/README.md

6.2 KiB

DWINZO-BETA-BACKEND

Repository Structure: DWINZO_BACKEND/ │ ├── .gitignore ├── package.json
├── .env
│ └── src/ │ ├── api-server/ │ │ │ └── controller/
│ ├─── Routes/
│ ├── V1
│ │ └── v1Controllers/
│ │ ├── v1Routes/ │ ├─── app.ts
│ ├─── main.ts │ ├── shared │ │ │ └── connect/
│ ├─── middleware/
│ ├─── model/ │ ├─── redis/ │ ├─── services/ │ ├─── swagger/ │ ├─── utils/ │ ├─── V1Models/ │ ├── socket-server │ │ │ └── controllers/
│ ├─── manager/
│ ├─── services/ │ ├─── socket/ │ ├─── utils/ │ ├─── index.ts

VERSION CONTROL MODULE: The Version Control Module is a backend system component designed to track, store, and manage multiple versions of data entities (such as scenes, assets, layouts, or entire projects). It enables developers and users to:

  • View the historical state of an entity.

  • Restore previous versions.

  • Audit changes over time.

  • Enable branching workflows like clone and rollback.

TECH STACK: Language: Typescript Framework: Express.js Database: Mongodb

Architecture FOR API:

Entry Point:

  • src/api-server/main.js starts the server and runs the main application.
  • src/api-server/app.js sets up the Express app, middleware, and routes.

Components:

  • src/api-server/V1/ (controllers, routes).
  • src/shared/services/ (Service logics).

Utils:

  • src/shared/utils/ contains Express middleware functions (e.g., hashing,tokenDatas).

Database:

  • src/shared/connect/ handles database configuration and connection logic.

Models:

  • src/shared/V1Models/ handles mongo schema structure and datatype.

Routing for Version:


|Method | Routing | Description | |||| |POST | /generateVersion | Create New version | |||| |POST | /version/rollback | Version Rollback for the previous version | |||| |GET | /:projectId/versions | Project based Version histories | ||||
|GET | /version/:versionId/:projectId | Get a Version Datas | |
|
|_______________|

NEW VERSION instructions:

Request Datas: - userId, organization from the User authenticationtoken. - hierarchyVersion(parentVersion),description,projectId,createdBy(userId) from the body data.

LOGIC: - checking for the valid userId,projectId and parentVersion. - checking for the PreviousVersion based on the project. - NewVersion Creation based on th PreviousVersion and parentVersion. - Cloning for the previousVersion Datas(Scenes,asset,etc.) for the newVersion. - Update the project data based on the latestVersion.

Response Datas: - Http response with status code of 404 for User not found, Project not found and Parent Version not found. - Http response with status code of 200 with Newversion unique Id(mongo _id). - Http response with status code of 500 for Internal server error and Unknown error.

ROLL BACK instructions:

Request Datas: - userId, organization from the User authenticationtoken. - projectId,versionId from the body data.

LOGIC: - checking for the valid userId,projectId and versionId(rollback versionId). - checking for the PreviousVersion based on the project. - NewVersion Creation based on th PreviousVersion and parentVersion(rollback versionId). - Cloning for the parentVersion(rollback versionId) Datas(Scenes,asset,etc.) for the newVersion. - Update the project data based on the latestVersion.

Response Datas: - Http response with status code of 404 for User not found, Project not found and Mentioned Version not found for the Rollback. - Http response with status code of 200 with Newversion unique Id(mongo _id) and message:"Rollback successfull". - Http response with status code of 500 for Internal server error and Unknown error.

VERSION HISTORY instructions:

Request Datas: - userId, organization from the User authenticationtoken. - projectId params data. - page,limit query data.

LOGIC: - checking for the valid userId,projectId. - fetching the allversions based on projectId for the Total count. - filtering total project versions based on the sorting,limit and page. - After filtering finalResponse with metaDatas like total count,page,limit and hasNextPage is provided

Response Datas: - Http response with status code of 404 for User not found, Project not found and Mentioned Version not found for the Rollback. - Http response with status code of 200 for Version History Datas. - Http response with status code of 200 for Versions not found with empty Array[]. - Http response with status code of 500 for Internal server error and Unknown error.

PARTICULAR VERSION DATA instructions:

Request Datas: - userId, organization from the User authenticationtoken. - projectId,versionId params data.

LOGIC: - checking for the valid userId,projectId. - checking for the versionId based on the project. - For existingVersion Fetching all the Builder, Simulation, RTViz datas based on the projectId and versionId

Response Datas: - Http response with status code of 404 for User not found, Project not found and Mentioned Version not found for the Rollback. - Http response with status code of 200 for Version based Datas. - Http response with status code of 200 for Versions not found with empty Array[]. - Http response with status code of 500 for Internal server error and Unknown error.