Update sequelize

This commit is contained in:
Jonas L 2019-06-24 00:00:00 +00:00
parent 17058c375c
commit e70a80bf46
38 changed files with 238 additions and 220 deletions

144
package-lock.json generated
View file

@ -143,11 +143,6 @@
"@types/range-parser": "*"
}
},
"@types/geojson": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-1.0.6.tgz",
"integrity": "sha512-Xqg/lIZMrUd0VRmSRbCAewtwGZiAk3mEUDvV4op1tGl+LvyPcb/MIOSxTl9z+9+J+R4/vpjiCAT4xeKzH9ji1w=="
},
"@types/http-errors": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.6.1.tgz",
@ -419,6 +414,11 @@
"resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz",
"integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk="
},
"any-promise": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
"integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8="
},
"anymatch": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
@ -1554,9 +1554,9 @@
}
},
"dottie": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.0.tgz",
"integrity": "sha1-2hkZgci41xPKARXViYzzl8Lw3dA="
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.1.tgz",
"integrity": "sha512-ch5OQgvGDK2u8pSZeSYAQaV/lczImd7pMJ7BcEPXmnFVjy4yJIzP6CsODJUTH8mg1tyH1Z2abOiuJO3DjZ/GBw=="
},
"duplexer": {
"version": "0.1.1",
@ -2828,11 +2828,6 @@
"is-property": "^1.0.2"
}
},
"generic-pool": {
"version": "3.4.2",
"resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.4.2.tgz",
"integrity": "sha512-H7cUpwCQSiJmAHM4c/aFu6fUfrhWXW1ncyh8ftxEPMu6AiYkHw9K8br720TGPZJbk5eOH2bynjZD1yPvdDAmag=="
},
"get-caller-file": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
@ -4103,14 +4098,14 @@
}
},
"moment": {
"version": "2.22.2",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz",
"integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y="
"version": "2.24.0",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz",
"integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg=="
},
"moment-timezone": {
"version": "0.5.21",
"resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.21.tgz",
"integrity": "sha512-j96bAh4otsgj3lKydm3K7kdtA3iKf2m6MY2iSYCzCm5a1zmHo1g+aK3068dDEeocLZQIS9kU8bsdQHLqEvgW0A==",
"version": "0.5.25",
"resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.25.tgz",
"integrity": "sha512-DgEaTyN/z0HFaVcVbSyVCUU6HeFdnNC3vE4c9cgu2dgMTvjBUBdBzWfasTBmAW45u5OIMeCJtU8yNjM22DHucw==",
"requires": {
"moment": ">= 2.9.0"
}
@ -5123,22 +5118,11 @@
"dev": true
},
"retry-as-promised": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-2.3.2.tgz",
"integrity": "sha1-zZdO5P2bX+A8vzGHHuSCIcB3N7c=",
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-3.2.0.tgz",
"integrity": "sha512-CybGs60B7oYU/qSQ6kuaFmRd9sTZ6oXSc0toqePvV74Ac6/IFZSI1ReFQmtCN+uvW1Mtqdwpvt/LGOiCBAY2Mg==",
"requires": {
"bluebird": "^3.4.6",
"debug": "^2.6.9"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
}
}
"any-promise": "^1.3.0"
}
},
"right-align": {
@ -5278,29 +5262,52 @@
"integrity": "sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4="
},
"sequelize": {
"version": "4.38.0",
"resolved": "https://registry.npmjs.org/sequelize/-/sequelize-4.38.0.tgz",
"integrity": "sha512-ZCcV2HuzU+03xunWgVeyXnPa/RYY5D2U/WUNpq+xF8VmDTLnSDsHl+pEwmiWrpZD7KdBqDczCeTgjToYyVzYQg==",
"version": "5.8.12",
"resolved": "https://registry.npmjs.org/sequelize/-/sequelize-5.8.12.tgz",
"integrity": "sha512-TtgGgQx/+Nub/IdkV7hqEoozUnOYv28waB/l44fMk37Rr+4G3Inrn9opDb/g81zSuRUKsYGOucdWq0qLH+7ujA==",
"requires": {
"bluebird": "^3.5.0",
"cls-bluebird": "^2.1.0",
"debug": "^3.1.0",
"depd": "^1.1.0",
"debug": "^4.1.1",
"dottie": "^2.0.0",
"generic-pool": "^3.4.0",
"inflection": "1.12.0",
"lodash": "^4.17.1",
"moment": "^2.20.0",
"moment-timezone": "^0.5.14",
"retry-as-promised": "^2.3.2",
"semver": "^5.5.0",
"terraformer-wkt-parser": "^1.1.2",
"lodash": "^4.17.11",
"moment": "^2.24.0",
"moment-timezone": "^0.5.21",
"retry-as-promised": "^3.1.0",
"semver": "^6.1.1",
"sequelize-pool": "^2.2.0",
"toposort-class": "^1.0.1",
"uuid": "^3.2.1",
"validator": "^10.4.0",
"wkx": "^0.4.1"
"validator": "^10.11.0",
"wkx": "^0.4.6"
},
"dependencies": {
"debug": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"requires": {
"ms": "^2.1.1"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"semver": {
"version": "6.1.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.1.2.tgz",
"integrity": "sha512-z4PqiCpomGtWj8633oeAdXm1Kn1W++3T8epkZYnwiVgIYIJ0QHszhInYSJTYxebByQH7KVCEAn8R9duzZW2PhQ=="
}
}
},
"sequelize-pool": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-2.2.0.tgz",
"integrity": "sha512-N/cYyxNHShfANGXAhHtMExjWNr+eYCS4/pF5fs5fvPYxn1VgUhEX8kDmVV5bNS0gZwt55fjU9Sgg48k3Dy/uMg=="
},
"serve-static": {
"version": "1.13.2",
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
@ -5365,9 +5372,9 @@
"integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
},
"shimmer": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.0.tgz",
"integrity": "sha512-xTCx2vohXC2EWWDqY/zb4+5Mu28D+HYNSOuFzsyRDRvI/e1ICb69afwaUwfjr+25ZXldbOLyp+iDUZHq8UnTag=="
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz",
"integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw=="
},
"signal-exit": {
"version": "3.0.2",
@ -5740,23 +5747,6 @@
"execa": "^0.7.0"
}
},
"terraformer": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/terraformer/-/terraformer-1.0.9.tgz",
"integrity": "sha512-YlmQ1fsMWTkKGDGibCRWgmLzrpDRUr63Q025LJ/taYQ6j1Yb8q9McKF7NBi6ACAyUXO6F/bl9w6v4MY307y5Ag==",
"requires": {
"@types/geojson": "^1.0.0"
}
},
"terraformer-wkt-parser": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/terraformer-wkt-parser/-/terraformer-wkt-parser-1.2.0.tgz",
"integrity": "sha512-QU3iA54St5lF8Za1jg1oj4NYc8sn5tCZ08aNSWDeGzrsaV48eZk1iAVWasxhNspYBoCqdHuoot1pUTUrE1AJ4w==",
"requires": {
"@types/geojson": "^1.0.0",
"terraformer": "~1.0.5"
}
},
"through": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
@ -5973,9 +5963,9 @@
"integrity": "sha1-0cIJOlT/ihn1jP+HfuqlTyJC04M="
},
"typescript": {
"version": "2.9.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz",
"integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==",
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.2.tgz",
"integrity": "sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA==",
"dev": true
},
"typescript-json-schema": {
@ -6288,9 +6278,9 @@
"integrity": "sha512-FXg2qXMzfAhZc0y2HzELNfUeiOjPr+52hU1DNBWiJJ2luXD+dD1R9NA48Ug5aj0ibbxroeGDc/RJv6ThiGgkDw=="
},
"validator": {
"version": "10.4.0",
"resolved": "https://registry.npmjs.org/validator/-/validator-10.4.0.tgz",
"integrity": "sha512-Q/wBy3LB1uOyssgNlXSRmaf22NxjvDNZM2MtIQ4jaEOAB61xsh1TQxsq1CgzUMBV1lDrVMogIh8GjG1DYW0zLg=="
"version": "10.11.0",
"resolved": "https://registry.npmjs.org/validator/-/validator-10.11.0.tgz",
"integrity": "sha512-X/p3UZerAIsbBfN/IwahhYaBbY68EN/UQBWHtsbXGT5bfrH/p4NQzUCG1kF/rtKaNpnJ7jAu6NGTdSNtyNIXMw=="
},
"vary": {
"version": "1.1.2",
@ -6449,9 +6439,9 @@
}
},
"wkx": {
"version": "0.4.5",
"resolved": "https://registry.npmjs.org/wkx/-/wkx-0.4.5.tgz",
"integrity": "sha512-01dloEcJZAJabLO5XdcRgqdKpmnxS0zIT02LhkdWOZX2Zs2tPM6hlZ4XG9tWaWur1Qd1OO4kJxUbe2+5BofvnA==",
"version": "0.4.7",
"resolved": "https://registry.npmjs.org/wkx/-/wkx-0.4.7.tgz",
"integrity": "sha512-pHf546L96TK8RradLt1cWaIffstgv/zXZ14CGz5KnBs1AxBX0wm+IDphjJw0qrEqRv8P9W9CdTt8Z1unMRZ19A==",
"requires": {
"@types/node": "*"
}

View file

@ -31,14 +31,13 @@
"@types/express": "^4.16.0",
"@types/http-errors": "^1.6.1",
"@types/lodash": "^4.14.116",
"@types/sequelize": "^4.27.24",
"@types/socket.io": "^1.4.36",
"@types/tokgen": "^1.0.0",
"@types/umzug": "^2.2.0",
"nodemon": "^1.18.3",
"tslint": "^5.11.0",
"tslint-config-standard": "^7.1.0",
"typescript": "^2.9.2",
"typescript": "^3.5.2",
"typescript-json-schema": "^0.31.0"
},
"dependencies": {
@ -57,7 +56,7 @@
"pg": "^7.8.0",
"pg-hstore": "^2.3.2",
"rate-limiter-flexible": "^0.21.2",
"sequelize": "^4.38.0",
"sequelize": "^5.8.12",
"socket.io": "^2.1.1",
"tokgen": "^1.0.0",
"umzug": "^2.1.0"

View file

@ -26,8 +26,10 @@ export interface AddDeviceTokenAttributes {
createdAt: string
}
export type AddDeviceTokenInstance = Sequelize.Instance<AddDeviceTokenAttributes> & AddDeviceTokenAttributes
export type AddDeviceTokenModel = Sequelize.Model<AddDeviceTokenInstance, AddDeviceTokenAttributes>
export type AddDeviceTokenModel = Sequelize.Model & AddDeviceTokenAttributes
export type AddDeviceTokenModelStatic = typeof Sequelize.Model & {
new (values?: object, options?: Sequelize.BuildOptions): AddDeviceTokenModel;
}
export const attributes: SequelizeAttributes<AddDeviceTokenAttributes> = {
token: {
@ -39,4 +41,4 @@ export const attributes: SequelizeAttributes<AddDeviceTokenAttributes> = {
createdAt: { ...timestampColumn }
}
export const createAddDeviceTokenModel = (sequelize: Sequelize.Sequelize): AddDeviceTokenModel => sequelize.define<AddDeviceTokenInstance, AddDeviceTokenInstance>('AddDeviceToken', attributes)
export const createAddDeviceTokenModel = (sequelize: Sequelize.Sequelize): AddDeviceTokenModelStatic => <AddDeviceTokenModelStatic>sequelize.define('AddDeviceToken', attributes)

View file

@ -29,8 +29,10 @@ export interface AppAttributes {
recommendation: AppRecommendation
}
export type AppInstance = Sequelize.Instance<AppAttributes> & AppAttributes
export type AppModel = Sequelize.Model<AppInstance, AppAttributes>
export type AppModel = Sequelize.Model & AppAttributes
export type AppModelStatic = typeof Sequelize.Model & {
new (values?: object, options?: Sequelize.BuildOptions): AppModel;
}
export const attributes: SequelizeAttributes<AppAttributes> = {
familyId: {
@ -54,4 +56,4 @@ export const attributes: SequelizeAttributes<AppAttributes> = {
recommendation: createEnumColumn(appRecommendationValues)
}
export const createAppModel = (sequelize: Sequelize.Sequelize): AppModel => sequelize.define<AppInstance, AppAttributes>('App', attributes)
export const createAppModel = (sequelize: Sequelize.Sequelize): AppModelStatic => <AppModelStatic>sequelize.define('App', attributes)

View file

@ -27,8 +27,10 @@ export interface AppActivityAttributes {
title: string
}
export type AppActivityInstance = Sequelize.Instance<AppActivityAttributes> & AppActivityAttributes
export type AppActivityModel = Sequelize.Model<AppActivityInstance, AppActivityAttributes>
export type AppActivityModel = Sequelize.Model & AppActivityAttributes
export type AppActivityModelStatic = typeof Sequelize.Model & {
new (values?: object, options?: Sequelize.BuildOptions): AppActivityModel;
}
export const attributes: SequelizeAttributes<AppActivityAttributes> = {
familyId: {
@ -58,4 +60,4 @@ export const attributes: SequelizeAttributes<AppActivityAttributes> = {
title: { ...optionalLabelColumn }
}
export const createAppActivityModel = (sequelize: Sequelize.Sequelize): AppActivityModel => sequelize.define<AppActivityInstance, AppActivityAttributes>('AppActivity', attributes)
export const createAppActivityModel = (sequelize: Sequelize.Sequelize): AppActivityModelStatic => <AppActivityModelStatic>sequelize.define('AppActivity', attributes)

View file

@ -25,8 +25,10 @@ export interface AuthTokenAttributes {
createdAt: string
}
export type AuthTokenInstance = Sequelize.Instance<AuthTokenAttributes> & AuthTokenAttributes
export type AuthTokenModel = Sequelize.Model<AuthTokenInstance, AuthTokenAttributes>
export type AuthTokenModel = Sequelize.Model & AuthTokenAttributes
export type AuthTokenModelStatic = typeof Sequelize.Model & {
new (values?: object, options?: Sequelize.BuildOptions): AuthTokenModel;
}
export const attributes: SequelizeAttributes<AuthTokenAttributes> = {
token: {
@ -43,4 +45,4 @@ export const attributes: SequelizeAttributes<AuthTokenAttributes> = {
createdAt: { ...timestampColumn }
}
export const createAuthtokenModel = (sequelize: Sequelize.Sequelize): AuthTokenModel => sequelize.define<AuthTokenInstance, AuthTokenAttributes>('AuthToken', attributes)
export const createAuthtokenModel = (sequelize: Sequelize.Sequelize): AuthTokenModelStatic => <AuthTokenModelStatic>sequelize.define('AuthToken', attributes)

View file

@ -51,8 +51,10 @@ export interface CategoryAttributesVersion4 {
export type CategoryAttributes = CategoryAttributesVersion1 & CategoryAttributesVersion2 &
CategoryAttributesVersion3 & CategoryAttributesVersion4
export type CategoryInstance = Sequelize.Instance<CategoryAttributes> & CategoryAttributes
export type CategoryModel = Sequelize.Model<CategoryInstance, CategoryAttributes>
export type CategoryModel = Sequelize.Model & CategoryAttributes
export type CategoryModelStatic = typeof Sequelize.Model & {
new (values?: object, options?: Sequelize.BuildOptions): CategoryModel;
}
export const attributesVersion1: SequelizeAttributes<CategoryAttributesVersion1> = {
familyId: {
@ -124,4 +126,4 @@ export const attributes: SequelizeAttributes<CategoryAttributes> = {
...attributesVersion4
}
export const createCategoryModel = (sequelize: Sequelize.Sequelize): CategoryModel => sequelize.define<CategoryInstance, CategoryAttributes>('Category', attributes)
export const createCategoryModel = (sequelize: Sequelize.Sequelize): CategoryModelStatic => <CategoryModelStatic>sequelize.define('Category', attributes)

View file

@ -25,8 +25,10 @@ export interface CategoryAppAttributes {
packageName: string
}
export type CategoryAppInstance = Sequelize.Instance<CategoryAppAttributes> & CategoryAppAttributes
export type CategoryAppModel = Sequelize.Model<CategoryAppInstance, CategoryAppAttributes>
export type CategoryAppModel = Sequelize.Model & CategoryAppAttributes
export type CategoryAppModelStatic = typeof Sequelize.Model & {
new (values?: object, options?: Sequelize.BuildOptions): CategoryAppModel;
}
export const attributes: SequelizeAttributes<CategoryAppAttributes> = {
familyId: {
@ -47,4 +49,4 @@ export const attributes: SequelizeAttributes<CategoryAppAttributes> = {
}
}
export const createCategoryAppModel = (sequelize: Sequelize.Sequelize): CategoryAppModel => sequelize.define<CategoryAppInstance, CategoryAppAttributes>('CategoryApp', attributes)
export const createCategoryAppModel = (sequelize: Sequelize.Sequelize): CategoryAppModelStatic => <CategoryAppModelStatic>sequelize.define('CategoryApp', attributes)

View file

@ -17,7 +17,7 @@
import * as Sequelize from 'sequelize'
export const familyIdColumn: Sequelize.DefineAttributeColumnOptions = {
export const familyIdColumn: Sequelize.ModelAttributeColumnOptions = {
type: Sequelize.STRING(10),
allowNull: false,
validate: {
@ -26,7 +26,7 @@ export const familyIdColumn: Sequelize.DefineAttributeColumnOptions = {
}
}
export const idWithinFamilyColumn: Sequelize.DefineAttributeColumnOptions = {
export const idWithinFamilyColumn: Sequelize.ModelAttributeColumnOptions = {
type: Sequelize.STRING(6),
allowNull: false,
validate: {
@ -35,7 +35,7 @@ export const idWithinFamilyColumn: Sequelize.DefineAttributeColumnOptions = {
}
}
export const optionalIdWithinFamilyColumn: Sequelize.DefineAttributeColumnOptions = {
export const optionalIdWithinFamilyColumn: Sequelize.ModelAttributeColumnOptions = {
type: Sequelize.STRING(6),
allowNull: false,
validate: {
@ -43,7 +43,7 @@ export const optionalIdWithinFamilyColumn: Sequelize.DefineAttributeColumnOption
}
}
export const versionColumn: Sequelize.DefineAttributeColumnOptions = {
export const versionColumn: Sequelize.ModelAttributeColumnOptions = {
type: Sequelize.STRING(4),
allowNull: false,
validate: {
@ -51,7 +51,7 @@ export const versionColumn: Sequelize.DefineAttributeColumnOptions = {
is: /^[a-zA-Z0-9]{4}$/
}
}
export const labelColumn: Sequelize.DefineAttributeColumnOptions = {
export const labelColumn: Sequelize.ModelAttributeColumnOptions = {
type: Sequelize.STRING,
allowNull: false,
validate: {
@ -59,12 +59,12 @@ export const labelColumn: Sequelize.DefineAttributeColumnOptions = {
}
}
export const optionalLabelColumn: Sequelize.DefineAttributeColumnOptions = {
export const optionalLabelColumn: Sequelize.ModelAttributeColumnOptions = {
type: Sequelize.STRING,
allowNull: false
}
export const createEnumColumn = (possibleValues: Array<string>): Sequelize.DefineAttributeColumnOptions => ({
export const createEnumColumn = (possibleValues: Array<string>): Sequelize.ModelAttributeColumnOptions => ({
type: Sequelize.STRING,
allowNull: false,
validate: {
@ -74,7 +74,7 @@ export const createEnumColumn = (possibleValues: Array<string>): Sequelize.Defin
})
// warning: this results in an string field
export const timestampColumn: Sequelize.DefineAttributeColumnOptions = {
export const timestampColumn: Sequelize.ModelAttributeColumnOptions = {
type: Sequelize.BIGINT,
allowNull: false,
validate: {
@ -82,12 +82,12 @@ export const timestampColumn: Sequelize.DefineAttributeColumnOptions = {
}
}
export const booleanColumn: Sequelize.DefineAttributeColumnOptions = {
export const booleanColumn: Sequelize.ModelAttributeColumnOptions = {
type: Sequelize.BOOLEAN,
allowNull: false
}
export const authTokenColumn: Sequelize.DefineAttributeColumnOptions = {
export const authTokenColumn: Sequelize.ModelAttributeColumnOptions = {
type: Sequelize.STRING(32),
allowNull: false,
validate: {

View file

@ -23,8 +23,10 @@ export interface ConfigAttributes {
value: string | null
}
export type ConfigInstance = Sequelize.Instance<ConfigAttributes> & ConfigAttributes
export type ConfigModel = Sequelize.Model<ConfigInstance, ConfigAttributes>
export type ConfigModel = Sequelize.Model & ConfigAttributes
export type ConfigModelStatic = typeof Sequelize.Model & {
new (values?: object, options?: Sequelize.BuildOptions): ConfigModel;
}
export const attributes: SequelizeAttributes<ConfigAttributes> = {
id: {
@ -41,7 +43,7 @@ export const attributes: SequelizeAttributes<ConfigAttributes> = {
}
}
export const createConfigModel = (sequelize: Sequelize.Sequelize): ConfigModel => sequelize.define<ConfigInstance, ConfigAttributes>('Config', attributes)
export const createConfigModel = (sequelize: Sequelize.Sequelize): ConfigModelStatic => <ConfigModelStatic>sequelize.define('Config', attributes)
export const configItemIds = {
statusMessage: 'status_message'

View file

@ -93,8 +93,10 @@ export type DeviceAttributes = DeviceAttributesVersion1 & DeviceAttributesVersio
DeviceAttributesVersion6 & DeviceAttributesVersion7 & DeviceAttributesVersion8 &
DeviceAttributesVersion9 & DeviceAttributesVersion10
export type DeviceInstance = Sequelize.Instance<DeviceAttributes> & DeviceAttributes
export type DeviceModel = Sequelize.Model<DeviceInstance, DeviceAttributes>
export type DeviceModel = Sequelize.Model & DeviceAttributes
export type DeviceModelStatic = typeof Sequelize.Model & {
new (values?: object, options?: Sequelize.BuildOptions): DeviceModel;
}
export const attributesVersion1: SequelizeAttributes<DeviceAttributesVersion1> = {
familyId: {
@ -244,7 +246,7 @@ export const attributes: SequelizeAttributes<DeviceAttributes> = {
...attributesVersion10
}
export const createDeviceModel = (sequelize: Sequelize.Sequelize): DeviceModel => sequelize.define<DeviceInstance, DeviceAttributes>('Device', attributes)
export const createDeviceModel = (sequelize: Sequelize.Sequelize): DeviceModelStatic => <DeviceModelStatic>sequelize.define('Device', attributes)
export const hasDeviceManipulation = (device: DeviceAttributes) => {
const manipulationOfProtectionLevel = device.currentProtectionLevel !== device.highestProtectionLevel
const manipulationOfUsageStats = device.currentUsageStatsPermission !== device.highestUsageStatsPermission

View file

@ -29,8 +29,10 @@ export interface FamilyAttributes {
hasFullVersion: boolean
}
export type FamilyInstance = Sequelize.Instance<FamilyAttributes> & FamilyAttributes
export type FamilyModel = Sequelize.Model<FamilyInstance, FamilyAttributes>
export type FamilyModel = Sequelize.Model & FamilyAttributes
export type FamilyModelStatic = typeof Sequelize.Model & {
new (values?: object, options?: Sequelize.BuildOptions): FamilyModel;
}
export const attributes: SequelizeAttributes<FamilyAttributes> = {
familyId: {
@ -45,4 +47,4 @@ export const attributes: SequelizeAttributes<FamilyAttributes> = {
hasFullVersion: { ...booleanColumn }
}
export const createFamilyModel = (sequelize: Sequelize.Sequelize): FamilyModel => sequelize.define<FamilyInstance, FamilyAttributes>('Family', attributes)
export const createFamilyModel = (sequelize: Sequelize.Sequelize): FamilyModelStatic => <FamilyModelStatic>sequelize.define('Family', attributes)

View file

@ -16,39 +16,39 @@
*/
import * as Sequelize from 'sequelize'
import { AddDeviceTokenModel, createAddDeviceTokenModel } from './adddevicetoken'
import { AppModel, createAppModel } from './app'
import { AppActivityModel, createAppActivityModel } from './appactivity'
import { AuthTokenModel, createAuthtokenModel } from './authtoken'
import { CategoryModel, createCategoryModel } from './category'
import { CategoryAppModel, createCategoryAppModel } from './categoryapp'
import { ConfigModel, createConfigModel } from './config'
import { createDeviceModel, DeviceModel } from './device'
import { createFamilyModel, FamilyModel } from './family'
import { createMailLoginTokenModel, MailLoginTokenModel } from './maillogintoken'
import { AddDeviceTokenModelStatic, createAddDeviceTokenModel } from './adddevicetoken'
import { AppModelStatic, createAppModel } from './app'
import { AppActivityModelStatic, createAppActivityModel } from './appactivity'
import { AuthTokenModelStatic, createAuthtokenModel } from './authtoken'
import { CategoryModelStatic, createCategoryModel } from './category'
import { CategoryAppModelStatic, createCategoryAppModel } from './categoryapp'
import { ConfigModelStatic, createConfigModel } from './config'
import { createDeviceModel, DeviceModelStatic } from './device'
import { createFamilyModel, FamilyModelStatic } from './family'
import { createMailLoginTokenModel, MailLoginTokenModelStatic } from './maillogintoken'
import { createUmzug } from './migration/umzug'
import { createOldDeviceModel, OldDeviceModel } from './olddevice'
import { createPurchaseModel, PurchaseModel } from './purchase'
import { createTimelimitRuleModel, TimelimitRuleModel } from './timelimitrule'
import { createUsedTimeModel, UsedTimeModel } from './usedtime'
import { createUserModel, UserModel } from './user'
import { createOldDeviceModel, OldDeviceModelStatic } from './olddevice'
import { createPurchaseModel, PurchaseModelStatic } from './purchase'
import { createTimelimitRuleModel, TimelimitRuleModelStatic } from './timelimitrule'
import { createUsedTimeModel, UsedTimeModelStatic } from './usedtime'
import { createUserModel, UserModelStatic } from './user'
export interface Database {
addDeviceToken: AddDeviceTokenModel
authtoken: AuthTokenModel
app: AppModel
appActivity: AppActivityModel
category: CategoryModel
categoryApp: CategoryAppModel
config: ConfigModel
device: DeviceModel
family: FamilyModel
mailLoginToken: MailLoginTokenModel
oldDevice: OldDeviceModel
purchase: PurchaseModel
timelimitRule: TimelimitRuleModel
usedTime: UsedTimeModel
user: UserModel
addDeviceToken: AddDeviceTokenModelStatic
authtoken: AuthTokenModelStatic
app: AppModelStatic
appActivity: AppActivityModelStatic
category: CategoryModelStatic
categoryApp: CategoryAppModelStatic
config: ConfigModelStatic
device: DeviceModelStatic
family: FamilyModelStatic
mailLoginToken: MailLoginTokenModelStatic
oldDevice: OldDeviceModelStatic
purchase: PurchaseModelStatic
timelimitRule: TimelimitRuleModelStatic
usedTime: UsedTimeModelStatic
user: UserModelStatic
transaction: <T> (autoCallback: (t: Sequelize.Transaction) => Promise<T>) => Promise<T>
}
@ -73,11 +73,10 @@ const createDatabase = (sequelize: Sequelize.Sequelize): Database => ({
}, autoCallback) as any) as Promise<T>
})
export const sequelize = new Sequelize(process.env.DATABASE_URL || 'sqlite://test.db', {
export const sequelize = new Sequelize.Sequelize(process.env.DATABASE_URL || 'sqlite://test.db', {
define: {
timestamps: false
},
operatorsAliases: false,
logging: false
})

View file

@ -27,8 +27,10 @@ export interface MailLoginTokenAttributes {
remainingAttempts: number
}
export type MailLoginTokenInstance = Sequelize.Instance<MailLoginTokenAttributes> & MailLoginTokenAttributes
export type MailLoginTokenModel = Sequelize.Model<MailLoginTokenInstance, MailLoginTokenAttributes>
export type MailLoginTokenModel = Sequelize.Model & MailLoginTokenAttributes
export type MailLoginTokenModelStatic = typeof Sequelize.Model & {
new (values?: object, options?: Sequelize.BuildOptions): MailLoginTokenModel;
}
export const attributes: SequelizeAttributes<MailLoginTokenAttributes> = {
mailLoginToken: {
@ -59,4 +61,4 @@ export const attributes: SequelizeAttributes<MailLoginTokenAttributes> = {
}
}
export const createMailLoginTokenModel = (sequelize: Sequelize.Sequelize): MailLoginTokenModel => sequelize.define<MailLoginTokenInstance, MailLoginTokenAttributes>('MailLoginToken', attributes)
export const createMailLoginTokenModel = (sequelize: Sequelize.Sequelize): MailLoginTokenModelStatic => <MailLoginTokenModelStatic>sequelize.define('MailLoginToken', attributes)

View file

@ -15,7 +15,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { QueryInterface, Sequelize } from 'sequelize'
import { QueryInterface, Sequelize, Transaction } from 'sequelize'
import { attributes as addDeviceTokenAttributes } from '../../adddevicetoken'
import { attributes as appAttributes } from '../../app'
import { attributes as authTokenAttributes } from '../../authtoken'
@ -30,7 +30,7 @@ import { attributesVersion1 as userAttributes } from '../../user'
export async function up (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.createTable('AddDeviceTokens', addDeviceTokenAttributes, { transaction })
await queryInterface.createTable('Apps', appAttributes, { transaction })

View file

@ -15,13 +15,13 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { QueryInterface, Sequelize } from 'sequelize'
import { QueryInterface, Sequelize, Transaction } from 'sequelize'
import { attributesVersion2 } from '../../device'
import { attributes as oldDeviceAttributes } from '../../olddevice'
export async function up (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.addColumn('Devices', 'lastConnectivity', {
...attributesVersion2.lastConnectivity
@ -47,7 +47,7 @@ export async function up (queryInterface: QueryInterface, sequelize: Sequelize)
export async function down (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.removeColumn('Devices', 'lastConnectivity', { transaction })
await queryInterface.removeColumn('Devices', 'notSeenForLongTime', { transaction })

View file

@ -15,12 +15,12 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { QueryInterface, Sequelize } from 'sequelize'
import { QueryInterface, Sequelize, Transaction } from 'sequelize'
import { attributes as mailLoginTokenAttributes } from '../../maillogintoken'
export async function up (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.createTable('MailLoginTokens', mailLoginTokenAttributes, { transaction })
})
@ -28,7 +28,7 @@ export async function up (queryInterface: QueryInterface, sequelize: Sequelize)
export async function down (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.dropTable('MailLoginTokens', { transaction })
})

View file

@ -15,12 +15,12 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { QueryInterface, Sequelize } from 'sequelize'
import { QueryInterface, Sequelize, Transaction } from 'sequelize'
import { attributesVersion3 } from '../../device'
export async function up (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.addColumn('Devices', 'isUserKeptSignedIn', {
...attributesVersion3.isUserKeptSignedIn
@ -32,7 +32,7 @@ export async function up (queryInterface: QueryInterface, sequelize: Sequelize)
export async function down (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.removeColumn('Devices', 'isUserKeptSignedIn', { transaction })
})

View file

@ -15,12 +15,12 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { QueryInterface, Sequelize } from 'sequelize'
import { QueryInterface, Sequelize, Transaction } from 'sequelize'
import { attributesVersion2 } from '../../user'
export async function up (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.addColumn('Users', 'categoryForNotAssignedApps', {
...attributesVersion2.categoryForNotAssignedApps
@ -32,7 +32,7 @@ export async function up (queryInterface: QueryInterface, sequelize: Sequelize)
export async function down (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.removeColumn('Users', 'categoryForNotAssignedApps', { transaction })
})

View file

@ -15,12 +15,12 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { QueryInterface, Sequelize } from 'sequelize'
import { QueryInterface, Sequelize, Transaction } from 'sequelize'
import { attributesVersion2 } from '../../category'
export async function up (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.addColumn('Categories', 'parentCategoryId', {
...attributesVersion2.parentCategoryId
@ -32,7 +32,7 @@ export async function up (queryInterface: QueryInterface, sequelize: Sequelize)
export async function down (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.removeColumn('Categories', 'parentCategoryId', { transaction })
})

View file

@ -15,12 +15,12 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { QueryInterface, Sequelize } from 'sequelize'
import { QueryInterface, Sequelize, Transaction } from 'sequelize'
import { attributesVersion4 } from '../../device'
export async function up (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.addColumn('Devices', 'showDeviceConnected', {
...attributesVersion4.showDeviceConnected
@ -32,7 +32,7 @@ export async function up (queryInterface: QueryInterface, sequelize: Sequelize)
export async function down (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.removeColumn('Devices', 'showDeviceConnected', { transaction })
})

View file

@ -15,12 +15,12 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { QueryInterface, Sequelize } from 'sequelize'
import { QueryInterface, Sequelize, Transaction } from 'sequelize'
import { attributesVersion2 } from '../../usedtime'
export async function up (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.addColumn('UsedTimes', 'lastUpdate', {
...attributesVersion2.lastUpdate
@ -34,7 +34,7 @@ export async function up (queryInterface: QueryInterface, sequelize: Sequelize)
export async function down (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.removeIndex('UsedTimes', ['lastUpdate'], { transaction })
await queryInterface.removeColumn('UsedTimes', 'lastUpdate', { transaction })

View file

@ -15,13 +15,13 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { QueryInterface, Sequelize } from 'sequelize'
import { QueryInterface, Sequelize, Transaction } from 'sequelize'
import { attributesVersion5 as deviceAttributes } from '../../device'
import { attributesVersion3 as userAttributes } from '../../user'
export async function up (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
// users
await queryInterface.addColumn('Users', 'relaxPrimaryDeviceRule', {
@ -41,7 +41,7 @@ export async function up (queryInterface: QueryInterface, sequelize: Sequelize)
export async function down (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
// users
await queryInterface.removeColumn('Users', 'relaxPrimaryDeviceRule', { transaction })

View file

@ -15,12 +15,12 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { QueryInterface, Sequelize } from 'sequelize'
import { QueryInterface, Sequelize, Transaction } from 'sequelize'
import { attributesVersion6 } from '../../device'
export async function up (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.addColumn('Devices', 'considerRebootManipulation', {
...attributesVersion6.considerRebootManipulation
@ -38,7 +38,7 @@ export async function up (queryInterface: QueryInterface, sequelize: Sequelize)
export async function down (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.removeColumn('Devices', 'considerRebootManipulation', { transaction })
await queryInterface.removeColumn('Devices', 'didReboot', { transaction })

View file

@ -15,12 +15,12 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { QueryInterface, Sequelize } from 'sequelize'
import { QueryInterface, Sequelize, Transaction } from 'sequelize'
import { attributesVersion4 as userAttributes } from '../../user'
export async function up (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.addColumn('Users', 'mailNotificationFlags', {
...userAttributes.mailNotificationFlags
@ -30,7 +30,7 @@ export async function up (queryInterface: QueryInterface, sequelize: Sequelize)
export async function down (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.removeColumn('Users', 'mailNotificationFlags', { transaction })
})

View file

@ -15,12 +15,12 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { QueryInterface, Sequelize } from 'sequelize'
import { QueryInterface, Sequelize, Transaction } from 'sequelize'
import { attributesVersion3 as categoryAttributes } from '../../category'
export async function up (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.addColumn('Categories', 'blockAllNotifications', {
...categoryAttributes.blockAllNotifications
@ -30,7 +30,7 @@ export async function up (queryInterface: QueryInterface, sequelize: Sequelize)
export async function down (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.removeColumn('Categories', 'blockAllNotifications', { transaction })
})

View file

@ -15,12 +15,12 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { QueryInterface, Sequelize } from 'sequelize'
import { QueryInterface, Sequelize, Transaction } from 'sequelize'
import { attributesVersion7 } from '../../device'
export async function up (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.addColumn('Devices', 'currentOverlayPermission', {
...attributesVersion7.currentOverlayPermission
@ -38,7 +38,7 @@ export async function up (queryInterface: QueryInterface, sequelize: Sequelize)
export async function down (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.removeColumn('Devices', 'currentOverlayPermission', { transaction })
await queryInterface.removeColumn('Devices', 'highestOverlayPermission', { transaction })

View file

@ -15,12 +15,12 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { QueryInterface, Sequelize } from 'sequelize'
import { QueryInterface, Sequelize, Transaction } from 'sequelize'
import { attributesVersion8 } from '../../device'
export async function up (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.addColumn('Devices', 'asEnabled', {
...attributesVersion8.asEnabled
@ -38,7 +38,7 @@ export async function up (queryInterface: QueryInterface, sequelize: Sequelize)
export async function down (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.removeColumn('Devices', 'asEnabled', { transaction })
await queryInterface.removeColumn('Devices', 'wasAsEnabled', { transaction })

View file

@ -15,13 +15,13 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { QueryInterface, Sequelize } from 'sequelize'
import { QueryInterface, Sequelize, Transaction } from 'sequelize'
import { attributes as appActivityAttributes } from '../../appactivity'
import { attributesVersion9 as deviceAttributes } from '../../device'
export async function up (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.createTable('AppActivities', appActivityAttributes, { transaction })
await queryInterface.addColumn('Devices', 'activityLevelBlocking', {
@ -34,7 +34,7 @@ export async function up (queryInterface: QueryInterface, sequelize: Sequelize)
export async function down (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.dropTable('AppActivities', { transaction })
await queryInterface.removeColumn('Devices', 'activityLevelBlocking', { transaction })

View file

@ -15,13 +15,13 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { QueryInterface, Sequelize } from 'sequelize'
import { QueryInterface, Sequelize, Transaction } from 'sequelize'
import { attributes as categoryAttributes } from '../../category'
import { attributesVersion10 as deviceAttributes } from '../../device'
export async function up (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.addColumn('Devices', 'isQorLater', {
...deviceAttributes.isQorLater
@ -39,7 +39,7 @@ export async function up (queryInterface: QueryInterface, sequelize: Sequelize)
export async function down (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.removeColumn('Devices', 'isQorLater', { transaction })
await queryInterface.removeColumn('Categories', 'timeWarningFlags', { transaction })

View file

@ -15,12 +15,12 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { QueryInterface, Sequelize } from 'sequelize'
import { QueryInterface, Sequelize, Transaction } from 'sequelize'
import { attributes as configAttributes } from '../../config'
export async function up (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.createTable('Configs', configAttributes, { transaction })
})
@ -28,7 +28,7 @@ export async function up (queryInterface: QueryInterface, sequelize: Sequelize)
export async function down (queryInterface: QueryInterface, sequelize: Sequelize) {
await sequelize.transaction({
type: 'EXCLUSIVE'
type: Transaction.TYPES.EXCLUSIVE
}, async (transaction) => {
await queryInterface.dropTable('Configs', { transaction })
})

View file

@ -23,8 +23,10 @@ export interface OldDeviceAttributes {
deviceAuthToken: string
}
export type OldDeviceInstance = Sequelize.Instance<OldDeviceAttributes> & OldDeviceAttributes
export type OldDeviceModel = Sequelize.Model<OldDeviceInstance, OldDeviceAttributes>
export type OldDeviceModel = Sequelize.Model & OldDeviceAttributes
export type OldDeviceModelStatic = typeof Sequelize.Model & {
new (values?: object, options?: Sequelize.BuildOptions): OldDeviceModel;
}
export const attributes: SequelizeAttributes<OldDeviceAttributes> = {
deviceAuthToken: {
@ -33,4 +35,4 @@ export const attributes: SequelizeAttributes<OldDeviceAttributes> = {
}
}
export const createOldDeviceModel = (sequelize: Sequelize.Sequelize): OldDeviceModel => sequelize.define<OldDeviceInstance, OldDeviceAttributes>('OldDevice', attributes)
export const createOldDeviceModel = (sequelize: Sequelize.Sequelize): OldDeviceModelStatic => <OldDeviceModelStatic>sequelize.define('OldDevice', attributes)

View file

@ -29,8 +29,10 @@ export interface PurchaseAttributes {
newFullVersionEndTime: string
}
export type PurchaseInstance = Sequelize.Instance<PurchaseAttributes> & PurchaseAttributes
export type PurchaseModel = Sequelize.Model<PurchaseInstance, PurchaseAttributes>
export type PurchaseModel = Sequelize.Model & PurchaseAttributes
export type PurchaseModelStatic = typeof Sequelize.Model & {
new (values?: object, options?: Sequelize.BuildOptions): PurchaseModel;
}
export const attributes: SequelizeAttributes<PurchaseAttributes> = {
familyId: { ...familyIdColumn },
@ -48,4 +50,4 @@ export const attributes: SequelizeAttributes<PurchaseAttributes> = {
newFullVersionEndTime: timestampColumn
}
export const createPurchaseModel = (sequelize: Sequelize.Sequelize): PurchaseModel => sequelize.define<PurchaseInstance, PurchaseAttributes>('Purchase', attributes)
export const createPurchaseModel = (sequelize: Sequelize.Sequelize): PurchaseModelStatic => <PurchaseModelStatic>sequelize.define('Purchase', attributes)

View file

@ -28,8 +28,10 @@ export interface TimelimitRuleAttributes {
maximumTimeInMillis: number
}
export type TimelimitRuleInstance = Sequelize.Instance<TimelimitRuleAttributes> & TimelimitRuleAttributes
export type TimelimitRuleModel = Sequelize.Model<TimelimitRuleInstance, TimelimitRuleAttributes>
export type TimelimitRuleModel = Sequelize.Model & TimelimitRuleAttributes
export type TimelimitRuleModelStatic = typeof Sequelize.Model & {
new (values?: object, options?: Sequelize.BuildOptions): TimelimitRuleModel;
}
export const attributes: SequelizeAttributes<TimelimitRuleAttributes> = {
familyId: {
@ -59,4 +61,4 @@ export const attributes: SequelizeAttributes<TimelimitRuleAttributes> = {
}
}
export const createTimelimitRuleModel = (sequelize: Sequelize.Sequelize): TimelimitRuleModel => sequelize.define<TimelimitRuleInstance, TimelimitRuleAttributes>('TimelimitRule', attributes)
export const createTimelimitRuleModel = (sequelize: Sequelize.Sequelize): TimelimitRuleModelStatic => <TimelimitRuleModelStatic>sequelize.define('TimelimitRule', attributes)

View file

@ -18,5 +18,5 @@
import * as Sequelize from 'sequelize'
export type SequelizeAttributes<T extends { [key: string]: any }> = {
[P in keyof T]: Sequelize.DefineAttributeColumnOptions;
[P in keyof T]: Sequelize.ModelAttributeColumnOptions;
}

View file

@ -32,8 +32,10 @@ export interface UsedTimeAttributesVersion2 {
export type UsedTimeAttributes = UsedTimeAttributesVersion1 & UsedTimeAttributesVersion2
export type UsedTimeInstance = Sequelize.Instance<UsedTimeAttributes> & UsedTimeAttributes
export type UsedTimeModel = Sequelize.Model<UsedTimeInstance, UsedTimeAttributes>
export type UsedTimeModel = Sequelize.Model & UsedTimeAttributes
export type UsedTimeModelStatic = typeof Sequelize.Model & {
new (values?: object, options?: Sequelize.BuildOptions): UsedTimeModel;
}
export const attributesVersion1: SequelizeAttributes<UsedTimeAttributesVersion1> = {
familyId: {
@ -73,4 +75,4 @@ export const attributes = {
...attributesVersion2
}
export const createUsedTimeModel = (sequelize: Sequelize.Sequelize): UsedTimeModel => sequelize.define<UsedTimeInstance, UsedTimeAttributes>('UsedTime', attributes)
export const createUsedTimeModel = (sequelize: Sequelize.Sequelize): UsedTimeModelStatic => <UsedTimeModelStatic>sequelize.define('UsedTime', attributes)

View file

@ -52,8 +52,10 @@ export interface UserAttributesVersion4 {
export type UserAttributes = UserAttributesVersion1 & UserAttributesVersion2 &
UserAttributesVersion3 & UserAttributesVersion4
export type UserInstance = Sequelize.Instance<UserAttributes> & UserAttributes
export type UserModel = Sequelize.Model<UserInstance, UserAttributes>
export type UserModel = Sequelize.Model & UserAttributes
export type UserModelStatic = typeof Sequelize.Model & {
new (values?: object, options?: Sequelize.BuildOptions): UserModel;
}
export const attributesVersion1: SequelizeAttributes<UserAttributesVersion1> = {
familyId: {
@ -128,4 +130,4 @@ export const attributes: SequelizeAttributes<UserAttributes> = {
...attributesVersion4
}
export const createUserModel = (sequelize: Sequelize.Sequelize): UserModel => sequelize.define<UserInstance, UserAttributes>('User', attributes)
export const createUserModel = (sequelize: Sequelize.Sequelize): UserModelStatic => <UserModelStatic>sequelize.define('User', attributes)

View file

@ -23,7 +23,7 @@ export const getStatusMessage = async ({ database, transaction }: {
database: Database
transaction?: Sequelize.Transaction
}) => {
const currentStatusMessageItem = await database.config.findById(configItemIds.statusMessage, { transaction })
const currentStatusMessageItem = await database.config.findByPk(configItemIds.statusMessage, { transaction })
const currentStatusMessage = (currentStatusMessageItem ? currentStatusMessageItem.value : null) || ''
return currentStatusMessage
@ -40,7 +40,7 @@ export const setStatusMessage = async ({ database, newStatusMessage }: {
}
})
} else {
await database.config.insertOrUpdate({
await database.config.upsert({
id: configItemIds.statusMessage,
value: newStatusMessage
})