chore(backend): Setup MikroORM

Simpele configuratie, geen integratie
Succesvol commando's uitvoeren werkt
This commit is contained in:
Tibo De Peuter 2025-02-19 19:59:36 +01:00
parent 6d73120975
commit 2f280d3fb2
Signed by: tdpeuter
GPG key ID: 38297DE43F75FFE2
8 changed files with 1341 additions and 191 deletions

1477
backend/package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -20,13 +20,19 @@
},
"homepage": "https://sel2-1.ugent.be/",
"dependencies": {
"@mikro-orm/core": "^6.4.6",
"@mikro-orm/reflection": "^6.4.6",
"@mikro-orm/postgresql": "^6.4.6",
"dotenv": "^16.4.7",
"express": "^5.0.1"
},
"devDependencies": {
"@mikro-orm/cli": "^6.4.6",
"@types/express": "^5.0.0",
"@types/node": "^22.13.4",
"ts-node": "^10.9.2",
"tsx": "^4.19.3",
"typescript": "^5.7.3"
"typescript": "^5.7.3",
"vitest": "^3.0.6"
}
}

View file

@ -1,15 +1,21 @@
import express, {Express, Request, Response} from 'express';
import initORM from './orm'
const app: Express = express();
const port: string | number = process.env.PORT || 3000;
// TODO Replace with Express routes
app.get('/', (_, res: Response) => {
res.json({
message: 'Hello Dwengo!'
});
});
app.listen(port, () => {
async function startServer() {
const orm = await initORM();
app.listen(port, () => {
console.log(`Server is running at http://localhost:${port}`);
})
});
}
startServer();

View file

@ -0,0 +1,13 @@
import { Entity, OneToOne, PrimaryKey, Property } from '@mikro-orm/core'
@Entity()
export class User {
@PrimaryKey({ type: 'number' })
id!: number;
@Property()
firstName: string = '';
@Property()
lastName: string = '';
}

View file

@ -0,0 +1,12 @@
import { Options } from '@mikro-orm/core'
import { PostgreSqlDriver } from '@mikro-orm/postgresql'
const config: Options = {
driver: PostgreSqlDriver,
dbName: 'dwengo',
entities: ['dist/**/*.entity.js'],
entitiesTs: ['src/**/*.entity.ts'],
debug: true
};
export default config;

6
backend/src/orm.ts Normal file
View file

@ -0,0 +1,6 @@
import { MikroORM } from '@mikro-orm/core'
import config from './mikro-orm.config';
export default async function initORM() {
await MikroORM.init(config);
}

View file

@ -14,8 +14,8 @@
"target": "ESNext", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
// "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
// "jsx": "preserve", /* Specify what JSX code is generated. */
// "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */
// "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
"experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */
"emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
// "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */
// "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
// "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */