-
Notifications
You must be signed in to change notification settings - Fork 0
/
DependencyInjection.js
58 lines (44 loc) · 1.44 KB
/
DependencyInjection.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
//تزریق وابستگی بع این معناست
// اگر کلاس الف به کلاس ب وابسته است،
//بیایم خارج از کلاس الف، یک نمونه از کلاس ب بسازیم و اون شیء رو پاس بدیم به کلاس الف
// نه اینکه بیایم و ساخت شیء جدید رو داخل کلاس الف انجام بدیم.
// UserService.js
class UserService {
constructor(database) {
this.database = database;
// خط پایین کار درستی نیستش
//this.database = new Database();
}
getUser(id) {
return this.database.query(`SELECT * FROM users WHERE id = ${id}`);
}
}
module.exports = UserService;
// Database.js
class Database {
constructor() {
// Initialize database connection
}
query(sql) {
// Execute SQL query and return results
}
}
module.exports = Database;
// app.js
const express = require('express');
const bodyParser = require('body-parser');
const Database = require('./Database');
const UserService = require('./UserService');
const app = express();
app.use(bodyParser.json());
const database = new Database();
const userService = new UserService(database);
app.get('/user/:id', (req, res) => {
const userId = req.params.id;
userService.getUser(userId)
.then(user => res.json(user))
.catch(err => res.status(500).json({ error: err.message }));
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});