Merge pull request #1 from aabril/feat/project_structure
Project structure
This commit is contained in:
@ -11,8 +11,8 @@
|
|||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
|
|
||||||
- Inicializamos el projecto, usando npm init, con la node@latest (v24.4.1)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- Inicializamos el proyecto, usando npm init, con la node@latest (v24.4.1)
|
||||||
|
- Añadimos dependencias que voy a usar
|
||||||
|
- Creo una estructura de directorio inicial
|
||||||
|
- Añado un primer test (database.test.ts) para jest
|
||||||
|
6497
package-lock.json
generated
6497
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
14
package.json
14
package.json
@ -17,11 +17,21 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "tsc",
|
"build": "tsc",
|
||||||
"start": "node dist/index.js",
|
"start": "node dist/index.js",
|
||||||
"dev": "ts-node src/index.js"
|
"dev": "tsx watch src/index.ts",
|
||||||
|
"test": "jest",
|
||||||
|
"test:watch": "jest --watch",
|
||||||
|
"lint": "eslint src/**/*.ts",
|
||||||
|
"lint:fix": "eslint src/**/*.ts --fix"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@types/jest": "^30.0.0",
|
||||||
"@types/node": "^24.1.0",
|
"@types/node": "^24.1.0",
|
||||||
"ts-node": "^10.9.2",
|
"@typescript-eslint/eslint-plugin": "^8.38.0",
|
||||||
|
"@typescript-eslint/parser": "^8.38.0",
|
||||||
|
"eslint": "^9.32.0",
|
||||||
|
"jest": "^30.0.5",
|
||||||
|
"ts-jest": "^29.4.0",
|
||||||
|
"tsx": "^4.20.3",
|
||||||
"typescript": "^5.8.3"
|
"typescript": "^5.8.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
6
src/__tests__/database.test.ts
Normal file
6
src/__tests__/database.test.ts
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
// test temporal para probar que jest funciona
|
||||||
|
describe('DatabaseConnection', () => {
|
||||||
|
describe('Singleton Pattern', () => {
|
||||||
|
test('should return the same instance', () => {})
|
||||||
|
})
|
||||||
|
})
|
17
src/config/database.ts
Normal file
17
src/config/database.ts
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
// aqui la conexión con MongoDB, usando mongoose o cualquier otro odm que vaya a usar
|
||||||
|
// las conexión a bases de datos normalmente deberían ser Singleton para reutilizar la conexión
|
||||||
|
// motivo: pues no saturar la base de datos ni saturarla con multiples conexiones
|
||||||
|
|
||||||
|
export class DatabaseConnection {
|
||||||
|
private static instance: DatabaseConnection;
|
||||||
|
// private isConnected: boolean = false; // a implementar
|
||||||
|
|
||||||
|
private constructor() {}
|
||||||
|
|
||||||
|
public static getInstance(): DatabaseConnection {
|
||||||
|
if (!DatabaseConnection.instance) {
|
||||||
|
DatabaseConnection.instance = new DatabaseConnection();
|
||||||
|
}
|
||||||
|
return DatabaseConnection.instance;
|
||||||
|
}
|
||||||
|
}
|
6
src/controllers/FeedController.ts
Normal file
6
src/controllers/FeedController.ts
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
// Aquí exportamos una classe que gestiona las peticiones y comunica con los servicios/repositorioes
|
||||||
|
// thinking out loud: creo que voy a usar hono.dev, usaba express hace tiempo, y veo que es una especie de express moderno compatible con express
|
||||||
|
|
||||||
|
export class FeedController {
|
||||||
|
|
||||||
|
}
|
5
src/models/Feed.ts
Normal file
5
src/models/Feed.ts
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
// Aquí el modelo Feed
|
||||||
|
|
||||||
|
// Si usase mongoose, supongo que será diretamente el modelo de mongoose
|
||||||
|
// Ya veré si uso algun otro ODM
|
||||||
|
|
2
src/repositories/FeedRepository.ts
Normal file
2
src/repositories/FeedRepository.ts
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
// Aquí el "repositorio" para lidiar con el modelo
|
||||||
|
// Lo tipico : ( Find , FindById, CreateOne ) etc.
|
1
src/types/Feed.ts
Normal file
1
src/types/Feed.ts
Normal file
@ -0,0 +1 @@
|
|||||||
|
// Aquí exportaré las interfaces que vaya a necesitas: las básicas, dtos, enums, etc.
|
2
src/utils/logger.ts
Normal file
2
src/utils/logger.ts
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
// Aquí "abstraeré" los logs, para evitar el uso de console.log (por seguridad, y por si queremos extraerlo a algun servicio)
|
||||||
|
// En mi dia usaba winston, llegué a usar pino que era más ligero, supongo que usaré pino, ya veremos.
|
Reference in New Issue
Block a user