cleanup index - check db version externally

define required db version in cofig as constant
some type updates
This commit is contained in:
Ulf Gebhardt 2022-02-01 02:51:43 +01:00
parent 97849dad5a
commit 2fc4c9c341
Signed by: ulfgebhardt
GPG Key ID: DA6B843E748679C9
4 changed files with 44 additions and 39 deletions

View File

@ -3,6 +3,10 @@
import dotenv from 'dotenv'
dotenv.config()
const constants = {
DB_VERSION: '0012-login_user_backups_unify_wordlist',
}
const server = {
PORT: process.env.PORT || 4000,
JWT_SECRET: process.env.JWT_SECRET || 'secret123',
@ -67,6 +71,7 @@ const webhook = {
process.env.APP_SECRET = server.JWT_SECRET
const CONFIG = {
...constants,
...server,
...database,
...klicktipp,

View File

@ -1,15 +1,12 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
import 'reflect-metadata'
import 'module-alias/register'
import { ApolloServer } from 'apollo-server-express'
import express from 'express'
import express, { Express } from 'express'
// database
import connection from '../typeorm/connection'
import getDBVersion from '../typeorm/getDBVersion'
import { checkDBVersion } from '../typeorm/DBVersion'
// server
import cors from './cors'
@ -24,27 +21,25 @@ import schema from '../graphql/schema'
// webhooks
import { elopageWebhook } from '../webhook/elopage'
import { Connection } from 'typeorm'
// TODO implement
// import queryComplexity, { simpleEstimator, fieldConfigEstimator } from "graphql-query-complexity";
const DB_VERSION = '0012-login_user_backups_unify_wordlist'
type ServerDef = { apollo: ApolloServer; app: Express; con: Connection }
const createServer = async (context: any = serverContext): Promise<any> => {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const createServer = async (context: any = serverContext): Promise<ServerDef> => {
// open mysql connection
const con = await connection()
if (!con || !con.isConnected) {
throw new Error(`Couldn't open connection to database`)
throw new Error(`Fatal: Couldn't open connection to database`)
}
// check for correct database version
const dbVersion = await getDBVersion()
if (!dbVersion || dbVersion.indexOf(DB_VERSION) === -1) {
throw new Error(
`Wrong database version - the backend requires '${DB_VERSION}' but found '${
dbVersion || 'None'
}'`,
)
const dbVersion = await checkDBVersion(CONFIG.DB_VERSION)
if (!dbVersion) {
throw new Error('Fatal: Database Version incorrect')
}
// Express Server
@ -58,15 +53,6 @@ const createServer = async (context: any = serverContext): Promise<any> => {
// bodyparser urlencoded for elopage
app.use(express.urlencoded({ extended: true }))
// Log every request
/*
app.use((req, res, next) => {
// eslint-disable-next-line no-console
console.log(req)
next()
})
*/
// Elopage Webhook
app.post('/hook/elopage/' + CONFIG.WEBHOOK_ELOPAGE_SECRET, elopageWebhook)

View File

@ -0,0 +1,29 @@
import { getRepository } from 'typeorm'
import { Migration } from '@entity/Migration'
const getDBVersion = async (): Promise<string | null> => {
try {
const dbVersion = await getRepository(Migration).findOne({ order: { version: 'DESC' } })
return dbVersion ? dbVersion.fileName : null
} catch (error) {
// eslint-disable-next-line no-console
console.log(error)
return null
}
}
const checkDBVersion = async (DB_VERSION: string): Promise<boolean> => {
const dbVersion = await getDBVersion()
if (!dbVersion || dbVersion.indexOf(DB_VERSION) === -1) {
// eslint-disable-next-line no-console
console.log(
`Wrong database version detected - the backend requires '${DB_VERSION}' but found '${
dbVersion || 'None'
}`,
)
return false
}
return true
}
export { checkDBVersion, getDBVersion }

View File

@ -1,15 +0,0 @@
import { getRepository } from 'typeorm'
import { Migration } from '@entity/Migration'
const getDBVersion = async (): Promise<string | null> => {
try {
const dbVersion = await getRepository(Migration).findOne({ order: { version: 'DESC' } })
return dbVersion ? dbVersion.fileName : null
} catch (error) {
// eslint-disable-next-line no-console
console.log(error)
return null
}
}
export default getDBVersion