Quellcode durchsuchen

:sparkles: switching to objectiion and schwifty

master
j vor 5 Jahren
Ursprung
Commit
0bf8c0d682
5 geänderte Dateien mit 3902 neuen und 324 gelöschten Zeilen
  1. 1
    1
      backend/config/dev.js
  2. 3845
    292
      backend/package-lock.json
  3. 4
    2
      backend/package.json
  4. 2
    1
      backend/src/docs.js
  5. 50
    28
      backend/src/index.js

+ 1
- 1
backend/config/dev.js Datei anzeigen

@@ -5,7 +5,7 @@ const config = {
5 5
 
6 6
     db: 'test',
7 7
     dbPort: 3306,
8
-    dbDialect: 'mariadb',
8
+    dbDialect: 'mysql', // even for mariadb
9 9
 
10 10
     /** URL preceding endpoints */
11 11
     apiBase: 'api',

+ 3845
- 292
backend/package-lock.json
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 4
- 2
backend/package.json Datei anzeigen

@@ -11,12 +11,14 @@
11 11
   "license": "UNLICENSED",
12 12
   "dependencies": {
13 13
     "@hapi/hapi": "^20.1.3",
14
+    "@hapipal/schwifty": "^6.0.0",
14 15
     "hapi-sequelizejs": "^4.4.0",
15 16
     "hapi-swaggered": "^3.0.2",
16 17
     "hapi-swaggered-ui": "^3.1.0",
17 18
     "joi": "^13.7.0",
18
-    "mariadb": "^2.5.3",
19
-    "sequelize": "^6.6.2"
19
+    "knex": "^0.21.19",
20
+    "mysql": "^2.18.1",
21
+    "objection": "^2.2.15"
20 22
   },
21 23
   "devDependencies": {
22 24
     "nodemon": "^2.0.7"

+ 2
- 1
backend/src/docs.js Datei anzeigen

@@ -24,5 +24,6 @@ const swaggeredUI = {
24 24
         },
25 25
     }
26 26
 }
27
+const docs = [ vision, inert, swaggered, swaggeredUI ]
27 28
 
28
-export default [ vision, inert, swaggered, swaggeredUI ]
29
+export { docs }

+ 50
- 28
backend/src/index.js Datei anzeigen

@@ -1,14 +1,13 @@
1 1
 import Hapi from '@hapi/hapi'
2
-import Sequelize from 'sequelize'
2
+import Schwifty from '@hapipal/schwifty'
3 3
 
4
-import hapiSequelizejs from 'hapi-sequelizejs'
4
+import { config } from '../config/dev.js'
5 5
 
6 6
 import { routes } from './routes/index.js'
7 7
 import { plugins } from './plugins/index.js'
8
+import { docs } from './docs.js'
8 9
 
9
-import docs from './docs.js'
10
-
11
-import { config } from '../config/dev.js'
10
+import Joi from 'joi'
12 11
 
13 12
 const server = Hapi.server({
14 13
     port: config.port,
@@ -18,21 +17,11 @@ const server = Hapi.server({
18 17
     }
19 18
 })
20 19
 
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
20
+const dbConnection = {
21
+    host : config.host,
22
+    user : 'root',
23
+    password : 'root',
24
+    database : config.db
36 25
 }
37 26
 
38 27
 const init = async () => {
@@ -47,18 +36,51 @@ const init = async () => {
47 36
 
48 37
         await server.register(docs)
49 38
 
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 */
39
+        /** Register the database connection */
57 40
         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()
41
+        await server.register({
42
+            plugin: Schwifty,
43
+            options: {
44
+                knex: { client: config.dbDialect, connection: dbConnection }
45
+            }
46
+        })
59 47
         console.log(`[SIIMEE API] Database: ${config.db} | Connection has been established on port ${config.dbPort}!`)
60 48
 
49
+
50
+
51
+
52
+
53
+        server.registerModel(
54
+            class Dog extends Schwifty.Model {
55
+                static tableName = 'Dog'
56
+                static joiSchema = Joi.object({
57
+                    id: Joi.number(),
58
+                    name: Joi.string()
59
+                })
60
+            }
61
+        )
62
+
63
+
61 64
         /** Lift Off! */
65
+        await server.initialize()
66
+        
67
+        const knex = server.knex()
68
+        // console.log(knex)
69
+        await knex.schema.createTable('Dog', (table) => {
70
+            table.increments('id').primary()
71
+            table.string('name')
72
+        })
73
+    
74
+        // ... then add some records ...
75
+    
76
+        const { Dog } = server.models()
77
+    
78
+        await Promise.all([
79
+            Dog.query().insert({ name: 'Guinness' }),
80
+            Dog.query().insert({ name: 'Sully' }),
81
+            Dog.query().insert({ name: 'Ren' })
82
+        ])
83
+
62 84
         await server.start()
63 85
         console.log('\n[SIIMEE API] Server running on %s', server.info.uri)
64 86
     }

Laden…
Abbrechen
Speichern