Selaa lähdekoodia

:sparkles: adding sequelize to the backend

master
TOJ 5 vuotta sitten
vanhempi
commit
c11ce059aa

+ 5
- 0
backend/config/dev.js Näytä tiedosto

@@ -3,6 +3,10 @@ const config = {
3 3
     host: 'localhost',
4 4
     port: 3001,
5 5
 
6
+    db: 'test',
7
+    dbPort: 3306,
8
+    dbDialect: 'mariadb',
9
+
6 10
     /** URL preceding endpoints */
7 11
     apiBase: 'api',
8 12
 
@@ -11,3 +15,4 @@ const config = {
11 15
 }
12 16
 
13 17
 export { config }
18
+

+ 622
- 19
backend/package-lock.json
File diff suppressed because it is too large
Näytä tiedosto


+ 4
- 1
backend/package.json Näytä tiedosto

@@ -11,9 +11,12 @@
11 11
   "license": "UNLICENSED",
12 12
   "dependencies": {
13 13
     "@hapi/hapi": "^20.1.3",
14
+    "hapi-sequelizejs": "^4.4.0",
14 15
     "hapi-swaggered": "^3.0.2",
15 16
     "hapi-swaggered-ui": "^3.1.0",
16
-    "joi": "^13.7.0"
17
+    "joi": "^13.7.0",
18
+    "mariadb": "^2.5.3",
19
+    "sequelize": "^6.6.2"
17 20
   },
18 21
   "devDependencies": {
19 22
     "nodemon": "^2.0.7"

+ 35
- 3
backend/src/index.js Näytä tiedosto

@@ -1,4 +1,7 @@
1 1
 import Hapi from '@hapi/hapi'
2
+import Sequelize from 'sequelize'
3
+
4
+import hapiSequelizejs from 'hapi-sequelizejs'
2 5
 
3 6
 import { routes } from './routes/index.js'
4 7
 import { plugins } from './plugins/index.js'
@@ -10,11 +13,28 @@ import { config } from '../config/dev.js'
10 13
 const server = Hapi.server({
11 14
     port: config.port,
12 15
     host: config.host,
13
-    routes: { 
16
+    routes: {
14 17
         cors: config.corsSupported
15 18
     }
16 19
 })
17 20
 
21
+const dbOpts = {
22
+    name: config.db, // identifier
23
+    models: ['./models/**/*.js'], // paths/globs to model files
24
+    ignoredModels: ['./models/**/*.js'], // OPTIONAL: paths/globs to ignore files
25
+    sequelize: new Sequelize(
26
+        config.db, // db name
27
+        'root', // U
28
+        'root', // P
29
+        {
30
+            host: config.host,
31
+            dialect: config.dbDialect
32
+        }
33
+    ),
34
+    sync: true, // sync models - default false
35
+    forceSync: false, // force sync (drops tables) - default false
36
+}
37
+
18 38
 const init = async () => {
19 39
     try {
20 40
         routes.forEach(route => server.route(route))
@@ -24,10 +44,22 @@ const init = async () => {
24 44
                 routes: { prefix: `/${config.apiBase}` }
25 45
             })
26 46
         }
27
-        
47
+
28 48
         await server.register(docs)
29 49
 
30
-        await server.start();
50
+        /** Register the Sequlize instance as a plugin */
51
+        await server.register({ plugin: hapiSequelizejs, options: dbOpts })
52
+
53
+        /** Uncomment to print the Sequlize instance */
54
+        // console.log(server.plugins['hapi-sequelizejs'][config.db])
55
+
56
+        /** Double-check the database connection */
57
+        console.log(`\n[SIIMEE API] Database: ${config.db} | Attempting to connect on port ${config.dbPort}...`)
58
+        await server.plugins['hapi-sequelizejs'][config.db].sequelize.authenticate()
59
+        console.log(`[SIIMEE API] Database: ${config.db} | Connection has been established on port ${config.dbPort}!`)
60
+
61
+        /** Lift Off! */
62
+        await server.start()
31 63
         console.log('\n[SIIMEE API] Server running on %s', server.info.uri)
32 64
     }
33 65
 

+ 0
- 0
backend/src/models/user.js Näytä tiedosto


+ 1
- 1
backend/src/plugins/profile/validators.js Näytä tiedosto

@@ -1,4 +1,4 @@
1
-import Joi from 'Joi'
1
+import Joi from 'joi'
2 2
 
3 3
 const validators = {
4 4
     params: Joi.object({

+ 9
- 9
docker-compose.yml Näytä tiedosto

@@ -2,18 +2,18 @@ version: "3"
2 2
 
3 3
 services:
4 4
     siimee-db:
5
-        image: couchdb:latest
6
-        container_name: siimee-db
7
-        ports:
8
-            - 5984:5984
9
-        environment:
10
-            COUCHDB_USER: admin
11
-            COUCHDB_PASSWORD: couchdb
5
+        image: mariadb:latest
6
+        container_name: siimee-dev-mariadb
12 7
         volumes:
13
-            - siimee_db:/opt/couchdb/data
8
+          - siimee_db:/var/lib/mysql
9
+        environment:
10
+          MYSQL_ROOT_PASSWORD: root
11
+          MYSQL_DATABASE: test
12
+        ports:
13
+          - '3306:3306'
14 14
 
15 15
 volumes:
16 16
     siimee_db:
17 17
 
18 18
 networks:
19
-    siimee_net:
19
+    siimee_net:

Loading…
Peruuta
Tallenna