create-craftjs 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-craftjs",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "A starter kit backend framework powered by Express, TypeScript, EJS Engine, and Prisma — designed for rapid development, simplicity, and scalability.",
5
5
  "bin": {
6
6
  "create-craftjs": "bin/index.js"
@@ -0,0 +1,71 @@
1
+ const fs = require("fs");
2
+ const path = require("path");
3
+ const chalk = require("chalk");
4
+
5
+ function toPascalCase(str) {
6
+ return str.replace(/(^\w|-\w)/g, (m) => m.replace("-", "").toUpperCase());
7
+ }
8
+
9
+ function makeController(name, options = {}) {
10
+ if (!name) {
11
+ console.log(chalk.red("❌ Please provide a controller name."));
12
+ return;
13
+ }
14
+
15
+ const parts = name.split("/");
16
+ const rawName = parts.pop();
17
+ const className = `${toPascalCase(rawName)}Controller`;
18
+ const fileName = `${rawName.toLowerCase()}-controller.ts`;
19
+ const targetDir = path.resolve("src", "controllers", ...parts);
20
+
21
+ if (!fs.existsSync(targetDir)) {
22
+ fs.mkdirSync(targetDir, { recursive: true });
23
+ }
24
+
25
+ const filePath = path.join(targetDir, fileName);
26
+ if (fs.existsSync(filePath)) {
27
+ console.log(chalk.yellow("⚠️ Controller already exists."));
28
+ return;
29
+ }
30
+
31
+ const resourceMethods = `
32
+ static async getAll(req: Request, res: Response) {
33
+ res.status(200).json({ message: "Listing all resources" });
34
+ }
35
+
36
+ static async getOne(req: Request, res: Response) {
37
+ res.status(200).json({ message: "Showing single resource" });
38
+ }
39
+
40
+ static async create(req: Request, res: Response) {
41
+ res.status(201).json({ message: "Resource created" });
42
+ }
43
+
44
+ static async update(req: Request, res: Response) {
45
+ res.status(200).json({ message: "Resource updated" });
46
+ }
47
+
48
+ static async delete(req: Request, res: Response) {
49
+ res.status(200).json({ message: "Resource deleted" });
50
+ }
51
+ `;
52
+
53
+ const defaultMethod = `
54
+ static async getAll(req: Request, res: Response) {
55
+ res.status(200).json({ message: "ok" });
56
+ }
57
+ `;
58
+
59
+ const methods = options.resource ? resourceMethods : defaultMethod;
60
+
61
+ const content = `import { Request, Response } from "express";
62
+
63
+ export class ${className} {${methods}
64
+ }
65
+ `;
66
+
67
+ fs.writeFileSync(filePath, content);
68
+ console.log(chalk.green(`✅ Controller created at ${filePath}`));
69
+ }
70
+
71
+ module.exports = makeController;
@@ -36,7 +36,7 @@ import { ${className} } from "../controllers/${routeName}-controller";
36
36
  export const ${routeConst} = express.Router();
37
37
 
38
38
  // Example routes:
39
- ${routeConst}.get("/api/${routeName}s", asyncHandler(authMiddleware), ${className}.index);
39
+ ${routeConst}.get("/api/${routeName}s", asyncHandler(authMiddleware), ${className}.getAll);
40
40
  `;
41
41
 
42
42
  fs.writeFileSync(filePath, content);
@@ -0,0 +1,24 @@
1
+ import { Request, Response } from "express";
2
+
3
+ export class SassController {
4
+ static async getAll(req: Request, res: Response) {
5
+ res.status(200).json({ message: "Listing all resources" });
6
+ }
7
+
8
+ static async getOne(req: Request, res: Response) {
9
+ res.status(200).json({ message: "Showing single resource" });
10
+ }
11
+
12
+ static async create(req: Request, res: Response) {
13
+ res.status(201).json({ message: "Resource created" });
14
+ }
15
+
16
+ static async update(req: Request, res: Response) {
17
+ res.status(200).json({ message: "Resource updated" });
18
+ }
19
+
20
+ static async delete(req: Request, res: Response) {
21
+ res.status(200).json({ message: "Resource deleted" });
22
+ }
23
+
24
+ }
@@ -14,17 +14,6 @@ import {
14
14
  import { UserRequest } from "../types/type-request";
15
15
 
16
16
  export class UserController {
17
- static async create(req: Request, res: Response, next: NextFunction) {
18
- try {
19
- const request: CreateUserRequest = req.body as CreateUserRequest;
20
- console.log(request);
21
- const response = await UserService.create(request);
22
- res.status(201).json(successCreateResponse(response));
23
- } catch (error) {
24
- next(error);
25
- }
26
- }
27
-
28
17
  static async getAll(req: Request, res: Response, next: NextFunction) {
29
18
  try {
30
19
  const page = Number(req.query.page) || 1;
@@ -56,6 +45,17 @@ export class UserController {
56
45
  }
57
46
  }
58
47
 
48
+ static async create(req: Request, res: Response, next: NextFunction) {
49
+ try {
50
+ const request: CreateUserRequest = req.body as CreateUserRequest;
51
+ console.log(request);
52
+ const response = await UserService.create(request);
53
+ res.status(201).json(successCreateResponse(response));
54
+ } catch (error) {
55
+ next(error);
56
+ }
57
+ }
58
+
59
59
  static async update(req: UserRequest, res: Response, next: NextFunction) {
60
60
  try {
61
61
  const id = req.params.id;