diff --git a/src/db/connection.js b/src/db/connection.ts similarity index 75% rename from src/db/connection.js rename to src/db/connection.ts index ce7f0aa..3329bdc 100644 --- a/src/db/connection.js +++ b/src/db/connection.ts @@ -1,11 +1,11 @@ -const Sequelize = require('sequelize') -const { Umzug, SequelizeStorage } = require('umzug') -const { DATABASE_URL } = require('../util/config') +import { Sequelize } from 'sequelize' +import { Umzug, SequelizeStorage } from 'umzug' +import { DATABASE_URL } from '../util/config' import logger from '../util/logger' const DB_CONNECTION_RETRY_LIMIT = 10 -const sequelize = new Sequelize(DATABASE_URL, { logging: false }) +export const sequelize = new Sequelize(DATABASE_URL, { logging: false }) const runMigrations = async () => { const migrator = new Umzug({ @@ -27,9 +27,9 @@ const testConnection = async () => { await runMigrations() } -const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)) +const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)) -const connectToDatabase = async (attempt = 0) => { +export const connectToDatabase = async (attempt = 0) => { try { await testConnection() } catch (err) { diff --git a/src/db/models/index.js b/src/db/models/index.js deleted file mode 100644 index 65054fc..0000000 --- a/src/db/models/index.js +++ /dev/null @@ -1,5 +0,0 @@ -const User = require('./user') - -module.exports = { - User, -} diff --git a/src/db/models/user.js b/src/db/models/user.js deleted file mode 100644 index fd85481..0000000 --- a/src/db/models/user.js +++ /dev/null @@ -1,24 +0,0 @@ -const { STRING, ARRAY } = require('sequelize') -const { sequelize } = require('../connection') - -const User = sequelize.define( - 'User', - { - id: { - type: STRING, - primaryKey: true, - allowNull: false, - }, - iamGroups: { - type: ARRAY(STRING), - allowNull: false, - defaultValue: [], - }, - }, - { - underscored: true, - sequelize, - }, -) - -module.exports = User diff --git a/src/db/models/user.ts b/src/db/models/user.ts new file mode 100644 index 0000000..7db2797 --- /dev/null +++ b/src/db/models/user.ts @@ -0,0 +1,25 @@ +import { STRING, ARRAY, InferAttributes, Model } from 'sequelize' +import { sequelize } from '../connection'; + +class User extends Model> { + declare id: string; + declare iamGroups: string[]; +} + +User.init( + { + id: { + type: STRING, + primaryKey: true, + }, + iamGroups: { + type: ARRAY(STRING), + allowNull: false, + defaultValue: [], + }, + }, + { sequelize, modelName: 'user', underscored: true }, +) + +module.exports = User +export default User diff --git a/src/index.js b/src/index.js index a957ccb..9a2ad9c 100644 --- a/src/index.js +++ b/src/index.js @@ -17,7 +17,7 @@ const { getIAMRights } = require('./auth/IAMRights') const { data } = require('./auth/data') const { connectToDatabase } = require('./db/connection') -const { User } = require('./db/models') +const User = require('./db/models/user') const testRouter = require('./util/testRouter') initializeSentry()