Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ local-*
*-local.*
*-local

.env
.env*
15 changes: 11 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,15 +43,16 @@ npm install
```

### 3. Configuración de variables de entorno
Crear un archivo `.env` en la raíz del proyecto como se indica en las [instrucciones](/doc/DotEnvSetup.md).

Crear un archivo `.env` / `.env.test` en la raíz del proyecto como se indica en las [instrucciones](/doc/DotEnvSetup.md).
- `.env` se debe utilizar para producción.
- `.env.test` se debe utilizar para testing.

## Pasos para correr el proyecto en local

1. Iniciar el servidor:

```bash
npm run server
npm run server:test
```

2. Abrir el navegador en la ruta indicada en la consola. Debería ser:
Expand All @@ -67,7 +68,7 @@ userRepo.createUser('[USERNAME]', '[PASSWORD]', '[NAME]', '[EMAIL]);
```
al final del archivo [`/src/routes/routes.ts`](/src/routes/routes.ts).

Luego inicial el servidor utilizando `npm run server`, se habrá creado un nuevo usuario de administrador con usuario [USERNAME] y contraseña [PASSWORD].
Luego inicial el servidor utilizando `npm run server:test`, se habrá creado un nuevo usuario de administrador con usuario [USERNAME] y contraseña [PASSWORD].

**Se recomienda eliminar la linea agregada después de usarla.**

Expand All @@ -81,10 +82,16 @@ npm run prepare

* **Compilar el proyecto e iniciar el servidor**:

Producción:
```bash
npm run server
```

Testing:
```bash
npm run server:test
```

## Extra

### ¿Cómo cargar alumnos a través de archivos CSV?
Expand Down
10 changes: 9 additions & 1 deletion doc/DotEnvSetup.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
Se deberá crear un archivo `.env` en la raíz del proyecto.
Se deberá crear un archivo `.env` / `.env.test` en la raíz del proyecto.

Las conexiones a la base de datos se pueden configurar de dos formas:
1. Especificando las variables individuales: PGUSER, PGPASSWORD, PGHOST, PGPORT y PGDATABASE.
2. Usando la variable DATABASE_URL con la cadena completa de conexión.

En caso de que ambas configuraciones estén presentes, se priorizará el valor de DATABASE_URL.

- El `.env` deberá tener las variables de entorno de la base de datos de producción.
Cuando se ejecuta el servidor con `npm run server` se tomará el `.env`·

- El `.env.test` deberá tener las variables de entorno de la base de datos de testing.
Cuando se ejecuta el servidor con `npm run server:testing` se tomará el `.env.test`.

Un ejemplo de archivo `.env` para correr localmente el proyecto:

```
Expand All @@ -15,6 +21,7 @@ PGHOST=localhost
PGPORT=5432
PGDATABASE=pyac_db

SESSION_SECRET=[COMPLETAR]
PORT=3000
```

Expand All @@ -25,5 +32,6 @@ Un ejemplo de `.env` donde se configura especificando la url de la base de datos
```
DATABASE_URL=[URL]

SESSION_SECRET=[COMPLETAR]
PORT=3000
```
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
},
"scripts": {
"prepare": "tsc -p ./tsconfig.json",
"server": "npm run prepare && node dist/server"
"server": "npm run prepare && node dist/server",
"server:test": "NODE_ENV=testing npm run server"
}
}
3 changes: 2 additions & 1 deletion src/database/client.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import 'dotenv/config';
import { Pool } from "pg";
import type { ClientConfig } from "pg";
import { dotenvConfig } from "../extra/dotenvConfig.js"

dotenvConfig()

const dbConfig: ClientConfig =
process.env.DATABASE_URL
Expand Down
13 changes: 13 additions & 0 deletions src/extra/dotenvConfig.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import dotenv from 'dotenv';
import path from "path";

export function dotenvConfig(){
let envFile = '.env'
if(process.env.NODE_ENV == 'testing'){
envFile = `.env.test`;
}

console.log(`Using envFile = ${envFile}`)

dotenv.config({ path: path.resolve(process.cwd(), envFile) });
}
3 changes: 3 additions & 0 deletions src/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,13 @@ import path from "path";
import { fileURLToPath } from "url";
import routes from "./routes/routes.js";
import session from 'express-session';
import { dotenvConfig } from "./extra/dotenvConfig.js";

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

dotenvConfig()

const app = express();
const PORT = process.env.PORT || 3000;

Expand Down