update dependencies
This commit is contained in:
parent
ad6fbb3b85
commit
11e95cb9c2
54
.eslintrc.js
54
.eslintrc.js
@ -4,15 +4,16 @@ module.exports = {
|
|||||||
project: 'tsconfig.json',
|
project: 'tsconfig.json',
|
||||||
sourceType: 'module',
|
sourceType: 'module',
|
||||||
},
|
},
|
||||||
"plugins": [
|
'plugins': [
|
||||||
"nestjs",
|
'nestjs',
|
||||||
"@typescript-eslint",
|
'@typescript-eslint/eslint-plugin',
|
||||||
"unused-imports"
|
'@typescript-eslint',
|
||||||
|
'unused-imports'
|
||||||
],
|
],
|
||||||
extends: [
|
extends: [
|
||||||
"eslint:recommended",
|
'eslint:recommended',
|
||||||
"plugin:nestjs/recommended",
|
'plugin:nestjs/recommended',
|
||||||
"plugin:@typescript-eslint/eslint-recommended",
|
'plugin:@typescript-eslint/eslint-recommended',
|
||||||
'plugin:@typescript-eslint/recommended',
|
'plugin:@typescript-eslint/recommended',
|
||||||
'plugin:@typescript-eslint/recommended-requiring-type-checking',
|
'plugin:@typescript-eslint/recommended-requiring-type-checking',
|
||||||
'prettier',
|
'prettier',
|
||||||
@ -23,8 +24,47 @@ module.exports = {
|
|||||||
jest: true,
|
jest: true,
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
|
'@typescript-eslint/no-unsafe-argument': 'warn',
|
||||||
|
'@typescript-eslint/no-unsafe-assignment': 'warn',
|
||||||
|
'@typescript-eslint/no-unsafe-member-access': 'warn',
|
||||||
'@typescript-eslint/interface-name-prefix': 'off',
|
'@typescript-eslint/interface-name-prefix': 'off',
|
||||||
'@typescript-eslint/explicit-function-return-type': 'off',
|
'@typescript-eslint/explicit-function-return-type': 'off',
|
||||||
'@typescript-eslint/no-explicit-any': 'off',
|
'@typescript-eslint/no-explicit-any': 'off',
|
||||||
|
'array-element-newline': ['error', {
|
||||||
|
'ArrayExpression': 'consistent',
|
||||||
|
'ArrayPattern': {
|
||||||
|
'minItems': 3,
|
||||||
|
'multiline': true,
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
'array-bracket-newline': ['error', {
|
||||||
|
'minItems': 3,
|
||||||
|
'multiline': true,
|
||||||
|
}],
|
||||||
|
'indent': [
|
||||||
|
'error',
|
||||||
|
2,
|
||||||
|
{
|
||||||
|
'SwitchCase': 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'no-tabs': ['error'],
|
||||||
|
'max-len': ['error', {
|
||||||
|
'code': 100,
|
||||||
|
'ignoreComments': true,
|
||||||
|
'ignoreUrls': true,
|
||||||
|
'ignoreTemplateLiterals': true,
|
||||||
|
'ignoreTrailingComments': true,
|
||||||
|
'ignoreStrings': true,
|
||||||
|
}],
|
||||||
|
'quotes': ['error', 'single', { 'avoidEscape': true }],
|
||||||
|
'comma-dangle': ['error', 'always-multiline'],
|
||||||
|
'linebreak-style': [
|
||||||
|
'error',
|
||||||
|
'unix'
|
||||||
|
],
|
||||||
|
'no-trailing-spaces': 'error',
|
||||||
|
'eol-last': 'error',
|
||||||
|
'unused-imports/no-unused-imports': 'error',
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
3
.gitignore
vendored
3
.gitignore
vendored
@ -38,3 +38,6 @@ lerna-debug.log*
|
|||||||
/data
|
/data
|
||||||
/.env
|
/.env
|
||||||
/src/schema.gql
|
/src/schema.gql
|
||||||
|
/data.sqlite
|
||||||
|
/maria_data
|
||||||
|
/pg_data
|
||||||
|
|||||||
112
package.json
112
package.json
@ -25,81 +25,83 @@
|
|||||||
"typeorm:maria": "cross-env TS_NODE_TRANSPILE_ONLY=true ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli.js -f ormconfig_maria.json"
|
"typeorm:maria": "cross-env TS_NODE_TRANSPILE_ONLY=true ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli.js -f ormconfig_maria.json"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@apollo/gateway": "^0.27.1",
|
|
||||||
"@nestjs-modules/mailer": "^1.6.0",
|
"@nestjs-modules/mailer": "^1.6.0",
|
||||||
"@nestjs/common": "^7.6.15",
|
"@nestjs/axios": "^0.0.3",
|
||||||
"@nestjs/config": "^0.6.3",
|
"@nestjs/common": "^8.2.4",
|
||||||
"@nestjs/core": "^7.6.15",
|
"@nestjs/config": "^1.1.5",
|
||||||
"@nestjs/graphql": "^7.10.6",
|
"@nestjs/core": "^8.2.4",
|
||||||
"@nestjs/jwt": "^7.2.0",
|
"@nestjs/graphql": "^9.1.2",
|
||||||
"@nestjs/passport": "^7.1.5",
|
"@nestjs/jwt": "^8.0.0",
|
||||||
"@nestjs/platform-express": "^7.6.15",
|
"@nestjs/passport": "^8.0.1",
|
||||||
"@nestjs/serve-static": "^2.1.4",
|
"@nestjs/platform-express": "^8.2.4",
|
||||||
"@nestjs/typeorm": "^7.1.5",
|
"@nestjs/serve-static": "^2.2.2",
|
||||||
"apollo-server-express": "^2.23.0",
|
"@nestjs/typeorm": "^8.0.2",
|
||||||
|
"apollo-server-express": "^3.6.1",
|
||||||
"bcrypt": "^5.0.1",
|
"bcrypt": "^5.0.1",
|
||||||
"class-transformer": "^0.4.0",
|
"class-transformer": "^0.5.1",
|
||||||
"class-validator": "^0.13.1",
|
"class-validator": "^0.13.2",
|
||||||
"commander": "^7.2.0",
|
"commander": "^8.3.0",
|
||||||
"cors": "^2.8.5",
|
"cors": "^2.8.5",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^7.0.3",
|
||||||
"dayjs": "^1.10.4",
|
"dayjs": "^1.10.7",
|
||||||
"graphql": "15.5.0",
|
"graphql": "15.8.0",
|
||||||
"graphql-redis-subscriptions": "^2.3.1",
|
"graphql-redis-subscriptions": "^2.4.2",
|
||||||
"graphql-subscriptions": "^1.2.1",
|
"graphql-subscriptions": "^2.0.0",
|
||||||
"graphql-tools": "^7.0.4",
|
"graphql-tools": "^8.2.0",
|
||||||
"handlebars": "^4.7.7",
|
"handlebars": "^4.7.7",
|
||||||
"html-to-text": "^7.1.1",
|
"html-to-text": "^8.1.0",
|
||||||
"inquirer": "^8.0.0",
|
"inquirer": "^8.2.0",
|
||||||
"ioredis": "^4.27.1",
|
"ioredis": "^4.28.2",
|
||||||
"matomo-tracker": "^2.2.4",
|
"matomo-tracker": "^2.2.4",
|
||||||
"mjml": "^4.9.1",
|
"mjml": "^4.11.0",
|
||||||
"mysql2": "^2.2.5",
|
"mysql2": "^2.3.3",
|
||||||
"nestjs-console": "^4.0.0",
|
"nestjs-console": "^7.0.1",
|
||||||
"nestjs-pino": "^1.4.0",
|
"nestjs-pino": "^2.4.0",
|
||||||
"nodemailer": "^6.6.0",
|
"nodemailer": "^6.7.2",
|
||||||
"passport": "^0.4.1",
|
"passport": "^0.5.2",
|
||||||
"passport-jwt": "^4.0.0",
|
"passport-jwt": "^4.0.0",
|
||||||
"passport-local": "^1.0.0",
|
"passport-local": "^1.0.0",
|
||||||
"pg": "^8.6.0",
|
"pg": "^8.7.1",
|
||||||
"pino-pretty": "^4.7.1",
|
"pino-http": "^6.5.0",
|
||||||
|
"pino-pretty": "^7.3.0",
|
||||||
"reflect-metadata": "^0.1.13",
|
"reflect-metadata": "^0.1.13",
|
||||||
"request-ip": "^2.1.3",
|
"request-ip": "^2.1.3",
|
||||||
"rimraf": "^3.0.2",
|
"rimraf": "^3.0.2",
|
||||||
"rxjs": "^6.6.7",
|
"rxjs": "^7.5.1",
|
||||||
|
"serialize-error": "^8.1.0",
|
||||||
"sqlite3": "^5.0.2",
|
"sqlite3": "^5.0.2",
|
||||||
"typeorm": "^0.2.32"
|
"typeorm": "^0.2.41"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@nestjs/cli": "^7.6.0",
|
"@nestjs/cli": "^8.1.6",
|
||||||
"@nestjs/schematics": "^7.3.1",
|
"@nestjs/schematics": "^8.0.5",
|
||||||
"@nestjs/testing": "^7.6.15",
|
"@nestjs/testing": "^8.2.4",
|
||||||
"@types/bcrypt": "^3.0.1",
|
"@types/bcrypt": "^5.0.0",
|
||||||
"@types/express-serve-static-core": "^4.17.19",
|
"@types/express-serve-static-core": "^4.17.27",
|
||||||
"@types/handlebars": "^4.1.0",
|
"@types/handlebars": "^4.1.0",
|
||||||
"@types/html-to-text": "^6.0.0",
|
"@types/html-to-text": "^8.0.1",
|
||||||
"@types/inquirer": "^7.3.1",
|
"@types/inquirer": "^8.1.3",
|
||||||
"@types/jest": "26.0.23",
|
"@types/jest": "26.0.23",
|
||||||
"@types/node": "^15.0.1",
|
"@types/node": "^16.11.17",
|
||||||
"@types/passport-jwt": "^3.0.5",
|
"@types/passport-jwt": "^3.0.6",
|
||||||
"@types/passport-local": "^1.0.33",
|
"@types/passport-local": "^1.0.34",
|
||||||
"@types/request-ip": "^0.0.35",
|
"@types/request-ip": "^0.0.37",
|
||||||
"@types/supertest": "^2.0.11",
|
"@types/supertest": "^2.0.11",
|
||||||
"@typescript-eslint/eslint-plugin": "^4.22.0",
|
"@typescript-eslint/eslint-plugin": "^5.8.1",
|
||||||
"@typescript-eslint/parser": "^4.22.0",
|
"@typescript-eslint/parser": "^5.8.1",
|
||||||
"eslint": "^7.25.0",
|
"eslint": "^8.6.0",
|
||||||
"eslint-config-prettier": "^8.3.0",
|
"eslint-config-prettier": "^8.3.0",
|
||||||
"eslint-plugin-import": "^2.22.1",
|
"eslint-plugin-import": "^2.25.3",
|
||||||
"eslint-plugin-nestjs": "^1.2.3",
|
"eslint-plugin-nestjs": "^1.2.3",
|
||||||
"eslint-plugin-unused-imports": "^2.0.0",
|
"eslint-plugin-unused-imports": "^2.0.0",
|
||||||
"jest": "^26.6.3",
|
"jest": "^27.4.5",
|
||||||
"prettier": "^2.2.1",
|
"prettier": "^2.5.1",
|
||||||
"supertest": "^6.1.3",
|
"supertest": "^6.1.6",
|
||||||
"ts-jest": "26.5.5",
|
"ts-jest": "27.1.2",
|
||||||
"ts-loader": "^9.1.1",
|
"ts-loader": "^9.2.6",
|
||||||
"ts-node": "^9.1.1",
|
"ts-node": "^10.4.0",
|
||||||
"tsconfig-paths": "^3.9.0",
|
"tsconfig-paths": "^3.12.0",
|
||||||
"typescript": "^4.2.4"
|
"typescript": "^4.5.4"
|
||||||
},
|
},
|
||||||
"jest": {
|
"jest": {
|
||||||
"moduleFileExtensions": [
|
"moduleFileExtensions": [
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
import { MailerModule } from '@nestjs-modules/mailer'
|
import { MailerModule } from '@nestjs-modules/mailer'
|
||||||
import { HttpModule, RequestMethod } from '@nestjs/common'
|
import { HttpModule } from '@nestjs/axios'
|
||||||
|
import { RequestMethod } from '@nestjs/common'
|
||||||
import { ConfigModule, ConfigService } from '@nestjs/config'
|
import { ConfigModule, ConfigService } from '@nestjs/config'
|
||||||
import { GraphQLModule } from '@nestjs/graphql'
|
import { GraphQLModule } from '@nestjs/graphql'
|
||||||
import { JwtModule, JwtModuleOptions } from '@nestjs/jwt'
|
import { JwtModule, JwtModuleOptions } from '@nestjs/jwt'
|
||||||
@ -9,18 +10,24 @@ import crypto from 'crypto'
|
|||||||
import { Request } from 'express-serve-static-core'
|
import { Request } from 'express-serve-static-core'
|
||||||
import { IncomingHttpHeaders } from 'http'
|
import { IncomingHttpHeaders } from 'http'
|
||||||
import { ConsoleModule } from 'nestjs-console'
|
import { ConsoleModule } from 'nestjs-console'
|
||||||
import { LoggerModule, Params as LoggerModuleParams } from 'nestjs-pino/dist'
|
import { LoggerModule, Params as LoggerModuleParams } from 'nestjs-pino'
|
||||||
import { join } from 'path'
|
import { join } from 'path'
|
||||||
|
import { serializeError } from 'serialize-error'
|
||||||
import { entities } from './entity'
|
import { entities } from './entity'
|
||||||
|
|
||||||
export const LoggerConfig: LoggerModuleParams = {
|
export const LoggerConfig: LoggerModuleParams = {
|
||||||
pinoHttp: {
|
pinoHttp: {
|
||||||
level: process.env.CLI ? 'warn' : process.env.NODE_ENV !== 'production' ? 'debug' : 'info',
|
level: process.env.CLI ? 'warn' : process.env.NODE_ENV !== 'production' ? 'debug' : 'info',
|
||||||
prettyPrint: process.env.NODE_ENV !== 'production' || process.env.CLI ? {
|
serializers: {
|
||||||
translateTime: true,
|
error: serializeError,
|
||||||
colorize: true,
|
},
|
||||||
ignore: 'pid,hostname,req,res',
|
transport: {
|
||||||
} : false,
|
options: {
|
||||||
|
ignore: 'req,res,pid,hostname',
|
||||||
|
translateTime: true,
|
||||||
|
},
|
||||||
|
target: process.env.NODE_ENV !== 'production' || process.env.CLI ? 'pino-pretty' : undefined,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
exclude: [
|
exclude: [
|
||||||
{
|
{
|
||||||
@ -30,7 +37,7 @@ export const LoggerConfig: LoggerModuleParams = {
|
|||||||
{
|
{
|
||||||
method: RequestMethod.ALL,
|
method: RequestMethod.ALL,
|
||||||
path: 'favicon.ico',
|
path: 'favicon.ico',
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,9 +49,7 @@ export const imports = [
|
|||||||
}),
|
}),
|
||||||
ServeStaticModule.forRoot({
|
ServeStaticModule.forRoot({
|
||||||
rootPath: join(__dirname, '..', 'public'),
|
rootPath: join(__dirname, '..', 'public'),
|
||||||
exclude: [
|
exclude: [],
|
||||||
|
|
||||||
]
|
|
||||||
}),
|
}),
|
||||||
ConfigModule.forRoot({
|
ConfigModule.forRoot({
|
||||||
load: [
|
load: [
|
||||||
@ -53,7 +58,7 @@ export const imports = [
|
|||||||
LOCALES_PATH: join(process.cwd(), 'locales'),
|
LOCALES_PATH: join(process.cwd(), 'locales'),
|
||||||
SECRET_KEY: process.env.SECRET_KEY || crypto.randomBytes(20).toString('hex'),
|
SECRET_KEY: process.env.SECRET_KEY || crypto.randomBytes(20).toString('hex'),
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
}),
|
}),
|
||||||
JwtModule.registerAsync({
|
JwtModule.registerAsync({
|
||||||
@ -64,7 +69,7 @@ export const imports = [
|
|||||||
signOptions: {
|
signOptions: {
|
||||||
expiresIn: '4h',
|
expiresIn: '4h',
|
||||||
},
|
},
|
||||||
})
|
}),
|
||||||
}),
|
}),
|
||||||
LoggerModule.forRoot(LoggerConfig),
|
LoggerModule.forRoot(LoggerConfig),
|
||||||
GraphQLModule.forRoot({
|
GraphQLModule.forRoot({
|
||||||
@ -72,8 +77,9 @@ export const imports = [
|
|||||||
definitions: {
|
definitions: {
|
||||||
outputAs: 'class',
|
outputAs: 'class',
|
||||||
},
|
},
|
||||||
introspection: true,
|
sortSchema: true,
|
||||||
playground: true,
|
introspection: process.env.NODE_ENV !== 'production',
|
||||||
|
playground: process.env.NODE_ENV !== 'production',
|
||||||
installSubscriptionHandlers: true,
|
installSubscriptionHandlers: true,
|
||||||
autoSchemaFile: join(process.cwd(), 'src/schema.gql'),
|
autoSchemaFile: join(process.cwd(), 'src/schema.gql'),
|
||||||
// to allow guards on resolver props https://github.com/nestjs/graphql/issues/295
|
// to allow guards on resolver props https://github.com/nestjs/graphql/issues/295
|
||||||
@ -94,8 +100,8 @@ export const imports = [
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
req: {
|
req: {
|
||||||
headers
|
headers,
|
||||||
} as Request
|
} as Request,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -107,7 +113,7 @@ export const imports = [
|
|||||||
inject: [ConfigService],
|
inject: [ConfigService],
|
||||||
useFactory: (configService: ConfigService): TypeOrmModuleOptions => {
|
useFactory: (configService: ConfigService): TypeOrmModuleOptions => {
|
||||||
const type: any = configService.get<string>('DATABASE_DRIVER', 'sqlite')
|
const type: any = configService.get<string>('DATABASE_DRIVER', 'sqlite')
|
||||||
let migrationFolder
|
let migrationFolder: string
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 'cockroachdb':
|
case 'cockroachdb':
|
||||||
@ -138,9 +144,7 @@ export const imports = [
|
|||||||
entityPrefix: configService.get<string>('DATABASE_TABLE_PREFIX', ''),
|
entityPrefix: configService.get<string>('DATABASE_TABLE_PREFIX', ''),
|
||||||
logging: configService.get<string>('DATABASE_LOGGING', 'false') === 'true',
|
logging: configService.get<string>('DATABASE_LOGGING', 'false') === 'true',
|
||||||
entities,
|
entities,
|
||||||
migrations: [
|
migrations: [`${__dirname}/**/migrations/${migrationFolder}/**/*{.ts,.js}`],
|
||||||
`${__dirname}/**/migrations/${migrationFolder}/**/*{.ts,.js}`,
|
|
||||||
],
|
|
||||||
migrationsRun: configService.get<boolean>('DATABASE_MIGRATE', true),
|
migrationsRun: configService.get<boolean>('DATABASE_MIGRATE', true),
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|||||||
@ -1,5 +1,3 @@
|
|||||||
import { UserCommand } from './user.command'
|
import { UserCommand } from './user.command'
|
||||||
|
|
||||||
export const commands = [
|
export const commands = [UserCommand]
|
||||||
UserCommand,
|
|
||||||
]
|
|
||||||
|
|||||||
@ -1,11 +1,12 @@
|
|||||||
import inquirer from 'inquirer'
|
import inquirer from 'inquirer'
|
||||||
import { Command, Console } from 'nestjs-console'
|
import { Command, Console } from 'nestjs-console'
|
||||||
import { matchType, validatePassword } from '../config/fields'
|
import { matchType, validatePassword } from '../config/fields'
|
||||||
|
import { UserCreateInput } from '../dto/user/user.create.input'
|
||||||
import { UserCreateService } from '../service/user/user.create.service'
|
import { UserCreateService } from '../service/user/user.create.service'
|
||||||
|
|
||||||
@Console({
|
@Console({
|
||||||
name: 'user',
|
command: 'user',
|
||||||
description: 'handle instance users'
|
description: 'handle instance users',
|
||||||
})
|
})
|
||||||
export class UserCommand {
|
export class UserCommand {
|
||||||
constructor(
|
constructor(
|
||||||
@ -17,7 +18,7 @@ export class UserCommand {
|
|||||||
command: 'create',
|
command: 'create',
|
||||||
})
|
})
|
||||||
async create(): Promise<void> {
|
async create(): Promise<void> {
|
||||||
const answers = await inquirer.prompt([
|
const answers = await inquirer.prompt<UserCreateInput>([
|
||||||
{
|
{
|
||||||
type: 'input',
|
type: 'input',
|
||||||
name: 'username',
|
name: 'username',
|
||||||
@ -46,8 +47,8 @@ export class UserCommand {
|
|||||||
name: 'create',
|
name: 'create',
|
||||||
message: current => {
|
message: current => {
|
||||||
return `create user ${current.username} with email ${current.email}`
|
return `create user ${current.username} with email ${current.email}`
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
])
|
])
|
||||||
|
|
||||||
await this.createUser.create(answers)
|
await this.createUser.create(answers)
|
||||||
|
|||||||
@ -2,4 +2,6 @@
|
|||||||
export type roleType = 'user' | 'admin' | 'superuser'
|
export type roleType = 'user' | 'admin' | 'superuser'
|
||||||
export type rolesType = roleType[]
|
export type rolesType = roleType[]
|
||||||
|
|
||||||
export const roles: rolesType = ['user', 'admin', 'superuser']
|
export const roles: rolesType = [
|
||||||
|
'user', 'admin', 'superuser',
|
||||||
|
]
|
||||||
|
|||||||
@ -1,5 +1,3 @@
|
|||||||
import { HealthController } from './health.controller'
|
import { HealthController } from './health.controller'
|
||||||
|
|
||||||
export const controllers = [
|
export const controllers = [HealthController]
|
||||||
HealthController,
|
|
||||||
]
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { Field, ObjectType } from '@nestjs/graphql'
|
|||||||
@ObjectType('Deleted')
|
@ObjectType('Deleted')
|
||||||
export class DeletedModel {
|
export class DeletedModel {
|
||||||
@Field()
|
@Field()
|
||||||
id: string
|
id: string
|
||||||
|
|
||||||
constructor(id: string) {
|
constructor(id: string) {
|
||||||
this.id = id
|
this.id = id
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
import { Field, ID, InputType } from '@nestjs/graphql'
|
import { Field, ID, InputType } from '@nestjs/graphql'
|
||||||
import { FormFieldLogicInput } from './form.field.logic.input'
|
import { FormFieldLogicInput } from './form.field.logic.input'
|
||||||
import { FormFieldLogicModel } from './form.field.logic.model'
|
|
||||||
import { FormFieldOptionInput } from './form.field.option.input'
|
import { FormFieldOptionInput } from './form.field.option.input'
|
||||||
import { FormFieldRatingInput } from './form.field.rating.input'
|
import { FormFieldRatingInput } from './form.field.rating.input'
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { Field, ID, InterfaceType, ObjectType } from '@nestjs/graphql'
|
import { Field, ID, ObjectType } from '@nestjs/graphql'
|
||||||
import { FormNotificationEntity } from '../../entity/form.notification.entity'
|
import { FormNotificationEntity } from '../../entity/form.notification.entity'
|
||||||
|
|
||||||
@ObjectType('FormNotification')
|
@ObjectType('FormNotification')
|
||||||
|
|||||||
@ -5,16 +5,16 @@ import { FormModel } from './form.model'
|
|||||||
@ObjectType('FormPager')
|
@ObjectType('FormPager')
|
||||||
export class FormPagerModel {
|
export class FormPagerModel {
|
||||||
@Field(() => [FormModel])
|
@Field(() => [FormModel])
|
||||||
entries: FormModel[]
|
entries: FormModel[]
|
||||||
|
|
||||||
@Field(() => GraphQLInt)
|
@Field(() => GraphQLInt)
|
||||||
total: number
|
total: number
|
||||||
|
|
||||||
@Field(() => GraphQLInt)
|
@Field(() => GraphQLInt)
|
||||||
limit: number
|
limit: number
|
||||||
|
|
||||||
@Field(() => GraphQLInt)
|
@Field(() => GraphQLInt)
|
||||||
start: number
|
start: number
|
||||||
|
|
||||||
constructor(entries: FormModel[], total: number, limit: number, start: number) {
|
constructor(entries: FormModel[], total: number, limit: number, start: number) {
|
||||||
this.entries = entries
|
this.entries = entries
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
import { Field, ID, ObjectType } from '@nestjs/graphql'
|
import { Field, ID, ObjectType } from '@nestjs/graphql'
|
||||||
import { randomBytes } from 'crypto'
|
|
||||||
import { PageEntity } from '../../entity/page.entity'
|
import { PageEntity } from '../../entity/page.entity'
|
||||||
import { ButtonModel } from './button.model'
|
import { ButtonModel } from './button.model'
|
||||||
|
|
||||||
|
|||||||
@ -5,16 +5,16 @@ import { SettingModel } from './setting.model'
|
|||||||
@ObjectType('SettingPager')
|
@ObjectType('SettingPager')
|
||||||
export class SettingPagerModel {
|
export class SettingPagerModel {
|
||||||
@Field(() => [SettingModel])
|
@Field(() => [SettingModel])
|
||||||
entries: SettingModel[]
|
entries: SettingModel[]
|
||||||
|
|
||||||
@Field(() => GraphQLInt)
|
@Field(() => GraphQLInt)
|
||||||
total: number
|
total: number
|
||||||
|
|
||||||
@Field(() => GraphQLInt)
|
@Field(() => GraphQLInt)
|
||||||
limit: number
|
limit: number
|
||||||
|
|
||||||
@Field(() => GraphQLInt)
|
@Field(() => GraphQLInt)
|
||||||
start: number
|
start: number
|
||||||
|
|
||||||
constructor(entries: SettingModel[], total: number, limit: number, start: number) {
|
constructor(entries: SettingModel[], total: number, limit: number, start: number) {
|
||||||
this.entries = entries
|
this.entries = entries
|
||||||
|
|||||||
@ -4,10 +4,10 @@ import { GeoLocationEmbedded } from '../../entity/embedded/geo.location.embedded
|
|||||||
@ObjectType('GeoLocation')
|
@ObjectType('GeoLocation')
|
||||||
export class GeoLocationModel {
|
export class GeoLocationModel {
|
||||||
@Field({ nullable: true })
|
@Field({ nullable: true })
|
||||||
country?: string
|
country?: string
|
||||||
|
|
||||||
@Field({ nullable: true })
|
@Field({ nullable: true })
|
||||||
city?: string
|
city?: string
|
||||||
|
|
||||||
constructor(geo: GeoLocationEmbedded) {
|
constructor(geo: GeoLocationEmbedded) {
|
||||||
this.country = geo.country
|
this.country = geo.country
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { Field, Float, ID, ObjectType } from '@nestjs/graphql'
|
import { Field, ID, ObjectType } from '@nestjs/graphql'
|
||||||
import { SubmissionEntity } from '../../entity/submission.entity'
|
import { SubmissionEntity } from '../../entity/submission.entity'
|
||||||
import { DeviceModel } from './device.model'
|
import { DeviceModel } from './device.model'
|
||||||
import { GeoLocationModel } from './geo.location.model'
|
import { GeoLocationModel } from './geo.location.model'
|
||||||
|
|||||||
@ -5,16 +5,16 @@ import { SubmissionModel } from './submission.model'
|
|||||||
@ObjectType('SubmissionPager')
|
@ObjectType('SubmissionPager')
|
||||||
export class SubmissionPagerModel {
|
export class SubmissionPagerModel {
|
||||||
@Field(() => [SubmissionModel])
|
@Field(() => [SubmissionModel])
|
||||||
entries: SubmissionModel[]
|
entries: SubmissionModel[]
|
||||||
|
|
||||||
@Field(() => GraphQLInt)
|
@Field(() => GraphQLInt)
|
||||||
total: number
|
total: number
|
||||||
|
|
||||||
@Field(() => GraphQLInt)
|
@Field(() => GraphQLInt)
|
||||||
limit: number
|
limit: number
|
||||||
|
|
||||||
@Field(() => GraphQLInt)
|
@Field(() => GraphQLInt)
|
||||||
start: number
|
start: number
|
||||||
|
|
||||||
constructor(entries: SubmissionModel[], total: number, limit: number, start: number) {
|
constructor(entries: SubmissionModel[], total: number, limit: number, start: number) {
|
||||||
this.entries = entries
|
this.entries = entries
|
||||||
|
|||||||
@ -6,23 +6,23 @@ export class UserCreateInput {
|
|||||||
@Field()
|
@Field()
|
||||||
@MinLength(2)
|
@MinLength(2)
|
||||||
@MaxLength(50)
|
@MaxLength(50)
|
||||||
username: string
|
username: string
|
||||||
|
|
||||||
@Field()
|
@Field()
|
||||||
@IsEmail()
|
@IsEmail()
|
||||||
@IsNotEmpty()
|
@IsNotEmpty()
|
||||||
email: string
|
email: string
|
||||||
|
|
||||||
@Field()
|
@Field()
|
||||||
@MinLength(5)
|
@MinLength(5)
|
||||||
password: string
|
password: string
|
||||||
|
|
||||||
@Field({ nullable: true })
|
@Field({ nullable: true })
|
||||||
firstName?: string
|
firstName?: string
|
||||||
|
|
||||||
@Field({ nullable: true })
|
@Field({ nullable: true })
|
||||||
lastName?: string
|
lastName?: string
|
||||||
|
|
||||||
@Field({ nullable: true })
|
@Field({ nullable: true })
|
||||||
language?: string
|
language?: string
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,16 +5,16 @@ import { UserModel } from './user.model'
|
|||||||
@ObjectType('UserPager')
|
@ObjectType('UserPager')
|
||||||
export class UserPagerModel {
|
export class UserPagerModel {
|
||||||
@Field(() => [UserModel])
|
@Field(() => [UserModel])
|
||||||
entries: UserModel[]
|
entries: UserModel[]
|
||||||
|
|
||||||
@Field(() => GraphQLInt)
|
@Field(() => GraphQLInt)
|
||||||
total: number
|
total: number
|
||||||
|
|
||||||
@Field(() => GraphQLInt)
|
@Field(() => GraphQLInt)
|
||||||
limit: number
|
limit: number
|
||||||
|
|
||||||
@Field(() => GraphQLInt)
|
@Field(() => GraphQLInt)
|
||||||
start: number
|
start: number
|
||||||
|
|
||||||
constructor(entries: UserModel[], total: number, limit: number, start: number) {
|
constructor(entries: UserModel[], total: number, limit: number, start: number) {
|
||||||
this.entries = entries
|
this.entries = entries
|
||||||
|
|||||||
@ -20,6 +20,7 @@ export class UserUpdateInput {
|
|||||||
@Field({ nullable: true })
|
@Field({ nullable: true })
|
||||||
readonly password: string
|
readonly password: string
|
||||||
|
|
||||||
|
// TODO validate
|
||||||
@Field(() => [String], { nullable: true })
|
@Field(() => [String], { nullable: true })
|
||||||
readonly roles: string[]
|
readonly roles: string[]
|
||||||
|
|
||||||
|
|||||||
@ -3,11 +3,11 @@ import { ColorsEmbedded } from './colors.embedded'
|
|||||||
|
|
||||||
export class DesignEmbedded {
|
export class DesignEmbedded {
|
||||||
@Column(() => ColorsEmbedded)
|
@Column(() => ColorsEmbedded)
|
||||||
colors: ColorsEmbedded = new ColorsEmbedded()
|
colors: ColorsEmbedded = new ColorsEmbedded()
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
font?: string
|
font?: string
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
layout?: string
|
layout?: string
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import {
|
|||||||
ManyToOne,
|
ManyToOne,
|
||||||
OneToMany,
|
OneToMany,
|
||||||
PrimaryGeneratedColumn,
|
PrimaryGeneratedColumn,
|
||||||
UpdateDateColumn
|
UpdateDateColumn,
|
||||||
} from 'typeorm'
|
} from 'typeorm'
|
||||||
import { AnalyticsEmbedded } from './embedded/analytics.embedded'
|
import { AnalyticsEmbedded } from './embedded/analytics.embedded'
|
||||||
import { DesignEmbedded } from './embedded/design.embedded'
|
import { DesignEmbedded } from './embedded/design.embedded'
|
||||||
|
|||||||
@ -4,8 +4,9 @@ import {
|
|||||||
Entity,
|
Entity,
|
||||||
ManyToOne,
|
ManyToOne,
|
||||||
OneToMany,
|
OneToMany,
|
||||||
PrimaryGeneratedColumn, RelationId,
|
PrimaryGeneratedColumn,
|
||||||
UpdateDateColumn
|
RelationId,
|
||||||
|
UpdateDateColumn,
|
||||||
} from 'typeorm'
|
} from 'typeorm'
|
||||||
import { DeviceEmbedded } from './embedded/device.embedded'
|
import { DeviceEmbedded } from './embedded/device.embedded'
|
||||||
import { GeoLocationEmbedded } from './embedded/geo.location.embedded'
|
import { GeoLocationEmbedded } from './embedded/geo.location.embedded'
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
import { Column, Entity, ManyToOne, PrimaryGeneratedColumn, RelationId } from 'typeorm'
|
import { Column, Entity, ManyToOne, PrimaryGeneratedColumn, RelationId } from 'typeorm'
|
||||||
import { FormEntity } from './form.entity'
|
|
||||||
import { FormFieldEntity } from './form.field.entity'
|
import { FormFieldEntity } from './form.field.entity'
|
||||||
import { SubmissionEntity } from './submission.entity'
|
import { SubmissionEntity } from './submission.entity'
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import {
|
|||||||
ManyToOne,
|
ManyToOne,
|
||||||
OneToMany,
|
OneToMany,
|
||||||
PrimaryGeneratedColumn,
|
PrimaryGeneratedColumn,
|
||||||
UpdateDateColumn
|
UpdateDateColumn,
|
||||||
} from 'typeorm'
|
} from 'typeorm'
|
||||||
import { DeviceEmbedded } from './embedded/device.embedded'
|
import { DeviceEmbedded } from './embedded/device.embedded'
|
||||||
import { GeoLocationEmbedded } from './embedded/geo.location.embedded'
|
import { GeoLocationEmbedded } from './embedded/geo.location.embedded'
|
||||||
|
|||||||
@ -1,22 +1,29 @@
|
|||||||
import { ExecutionContext, Injectable } from '@nestjs/common'
|
import { ExecutionContext, Injectable } from '@nestjs/common'
|
||||||
import { GqlExecutionContext } from '@nestjs/graphql'
|
import { GqlExecutionContext } from '@nestjs/graphql'
|
||||||
import { AuthGuard } from '@nestjs/passport'
|
import { AuthGuard } from '@nestjs/passport'
|
||||||
|
import { UserEntity } from '../entity/user.entity'
|
||||||
import { ContextCache } from '../resolver/context.cache'
|
import { ContextCache } from '../resolver/context.cache'
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class GqlAuthGuard extends AuthGuard('jwt') {
|
export class GqlAuthGuard extends AuthGuard('jwt') {
|
||||||
getRequest(context: ExecutionContext) {
|
getRequest(context: ExecutionContext) {
|
||||||
const ctx = GqlExecutionContext.create(context);
|
if (context.getType<any>() === 'graphql') {
|
||||||
if (!ctx.getContext().cache) {
|
const ctx = GqlExecutionContext.create(context);
|
||||||
ctx.getContext().cache = new ContextCache()
|
|
||||||
|
if (!ctx.getContext().cache) {
|
||||||
|
ctx.getContext().cache = new ContextCache()
|
||||||
|
}
|
||||||
|
return ctx.getContext().req;
|
||||||
}
|
}
|
||||||
return ctx.getContext().req;
|
|
||||||
|
return context.switchToHttp().getRequest()
|
||||||
}
|
}
|
||||||
|
|
||||||
handleRequest(err, user) {
|
handleRequest<T = UserEntity>(err, user: T): T {
|
||||||
if (err) {
|
if (err) {
|
||||||
throw new Error('invalid token')
|
throw new Error('invalid token')
|
||||||
}
|
}
|
||||||
|
|
||||||
return user
|
return user
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,13 +1,14 @@
|
|||||||
import { NestApplicationOptions, ValidationPipe } from '@nestjs/common'
|
import { NestApplicationOptions, ValidationPipe } from '@nestjs/common'
|
||||||
import { NestFactory } from '@nestjs/core'
|
import { NestFactory } from '@nestjs/core'
|
||||||
import cors from 'cors'
|
import cors from 'cors'
|
||||||
import { Logger, PinoLogger } from 'nestjs-pino/dist'
|
import { Logger, PinoLogger } from 'nestjs-pino'
|
||||||
import { LoggerConfig } from './app.imports'
|
import { LoggerConfig } from './app.imports'
|
||||||
import { AppModule } from './app.module'
|
import { AppModule } from './app.module'
|
||||||
|
|
||||||
(async () => {
|
(async () => {
|
||||||
const options: NestApplicationOptions = {
|
const options: NestApplicationOptions = {
|
||||||
logger: new Logger(new PinoLogger(LoggerConfig), {}),
|
logger: new Logger(new PinoLogger(LoggerConfig), {}),
|
||||||
|
bufferLogs: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
const app = await NestFactory.create(AppModule, options)
|
const app = await NestFactory.create(AppModule, options)
|
||||||
|
|||||||
@ -1,74 +1,74 @@
|
|||||||
import { MigrationInterface, QueryRunner } from "typeorm"
|
import { MigrationInterface, QueryRunner } from 'typeorm'
|
||||||
|
|
||||||
export class initial1619723437787 implements MigrationInterface {
|
export class initial1619723437787 implements MigrationInterface {
|
||||||
name = 'initial1619723437787'
|
name = 'initial1619723437787'
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||||
await queryRunner.query("CREATE TABLE `form_field_logic` (`id` int NOT NULL AUTO_INCREMENT, `formula` varchar(255) NOT NULL, `action` varchar(10) NOT NULL, `visible` tinyint NULL, `require` tinyint NULL, `disable` tinyint NULL, `enabled` tinyint NOT NULL, `fieldId` int NULL, `jumpToId` int NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB");
|
await queryRunner.query('CREATE TABLE `form_field_logic` (`id` int NOT NULL AUTO_INCREMENT, `formula` varchar(255) NOT NULL, `action` varchar(10) NOT NULL, `visible` tinyint NULL, `require` tinyint NULL, `disable` tinyint NULL, `enabled` tinyint NOT NULL, `fieldId` int NULL, `jumpToId` int NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB');
|
||||||
await queryRunner.query("CREATE TABLE `form_field_option` (`id` int NOT NULL AUTO_INCREMENT, `key` varchar(255) NULL, `title` varchar(255) NULL, `value` varchar(255) NOT NULL, `fieldId` int NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB");
|
await queryRunner.query('CREATE TABLE `form_field_option` (`id` int NOT NULL AUTO_INCREMENT, `key` varchar(255) NULL, `title` varchar(255) NULL, `value` varchar(255) NOT NULL, `fieldId` int NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB');
|
||||||
await queryRunner.query("CREATE TABLE `form_field` (`id` int NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `description` text NOT NULL, `slug` varchar(255) NULL, `required` tinyint NOT NULL, `disabled` tinyint NOT NULL, `type` varchar(255) NOT NULL, `value` varchar(255) NOT NULL, `formId` int NULL, `ratingSteps` int NULL, `ratingShape` varchar(255) NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB");
|
await queryRunner.query('CREATE TABLE `form_field` (`id` int NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `description` text NOT NULL, `slug` varchar(255) NULL, `required` tinyint NOT NULL, `disabled` tinyint NOT NULL, `type` varchar(255) NOT NULL, `value` varchar(255) NOT NULL, `formId` int NULL, `ratingSteps` int NULL, `ratingShape` varchar(255) NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB');
|
||||||
await queryRunner.query("CREATE TABLE `form_hook` (`id` int NOT NULL AUTO_INCREMENT, `enabled` tinyint NOT NULL, `url` varchar(255) NOT NULL, `format` varchar(255) NULL, `formId` int NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB");
|
await queryRunner.query('CREATE TABLE `form_hook` (`id` int NOT NULL AUTO_INCREMENT, `enabled` tinyint NOT NULL, `url` varchar(255) NOT NULL, `format` varchar(255) NULL, `formId` int NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB');
|
||||||
await queryRunner.query("CREATE TABLE `form_notification` (`id` int NOT NULL AUTO_INCREMENT, `subject` varchar(255) NULL, `htmlTemplate` varchar(255) NULL, `enabled` tinyint NOT NULL, `toEmail` varchar(255) NULL, `fromEmail` varchar(255) NULL, `formId` int NULL, `fromFieldId` int NULL, `toFieldId` int NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB");
|
await queryRunner.query('CREATE TABLE `form_notification` (`id` int NOT NULL AUTO_INCREMENT, `subject` varchar(255) NULL, `htmlTemplate` varchar(255) NULL, `enabled` tinyint NOT NULL, `toEmail` varchar(255) NULL, `fromEmail` varchar(255) NULL, `formId` int NULL, `fromFieldId` int NULL, `toFieldId` int NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB');
|
||||||
await queryRunner.query("CREATE TABLE `page_button` (`id` int NOT NULL AUTO_INCREMENT, `url` varchar(255) NULL, `action` varchar(255) NULL, `text` varchar(255) NOT NULL, `bgColor` varchar(255) NULL, `activeColor` varchar(255) NULL, `color` varchar(255) NULL, `pageId` int NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB");
|
await queryRunner.query('CREATE TABLE `page_button` (`id` int NOT NULL AUTO_INCREMENT, `url` varchar(255) NULL, `action` varchar(255) NULL, `text` varchar(255) NOT NULL, `bgColor` varchar(255) NULL, `activeColor` varchar(255) NULL, `color` varchar(255) NULL, `pageId` int NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB');
|
||||||
await queryRunner.query("CREATE TABLE `page` (`id` int NOT NULL AUTO_INCREMENT, `show` tinyint NOT NULL, `title` varchar(255) NULL, `paragraph` text NULL, `buttonText` varchar(255) NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB");
|
await queryRunner.query('CREATE TABLE `page` (`id` int NOT NULL AUTO_INCREMENT, `show` tinyint NOT NULL, `title` varchar(255) NULL, `paragraph` text NULL, `buttonText` varchar(255) NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB');
|
||||||
await queryRunner.query("CREATE TABLE `submission_field` (`id` int NOT NULL AUTO_INCREMENT, `fieldType` varchar(255) NOT NULL, `fieldValue` varchar(255) NOT NULL, `submissionId` int NULL, `fieldId` int NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB");
|
await queryRunner.query('CREATE TABLE `submission_field` (`id` int NOT NULL AUTO_INCREMENT, `fieldType` varchar(255) NOT NULL, `fieldValue` varchar(255) NOT NULL, `submissionId` int NULL, `fieldId` int NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB');
|
||||||
await queryRunner.query("CREATE TABLE `user` (`id` int NOT NULL AUTO_INCREMENT, `firstName` varchar(255) NULL, `lastName` varchar(255) NULL, `email` varchar(255) NOT NULL, `username` varchar(255) NOT NULL, `passwordHash` varchar(255) NOT NULL, `salt` varchar(255) NULL, `provider` varchar(255) NOT NULL, `roles` text NOT NULL, `language` varchar(255) NOT NULL, `resetPasswordToken` varchar(255) NULL, `resetPasswordExpires` datetime NULL, `token` varchar(255) NULL, `apiKey` varchar(255) NULL, `created` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `lastModified` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), UNIQUE INDEX `IDX_e12875dfb3b1d92d7d7c5377e2` (`email`), UNIQUE INDEX `IDX_78a916df40e02a9deb1c4b75ed` (`username`), PRIMARY KEY (`id`)) ENGINE=InnoDB");
|
await queryRunner.query('CREATE TABLE `user` (`id` int NOT NULL AUTO_INCREMENT, `firstName` varchar(255) NULL, `lastName` varchar(255) NULL, `email` varchar(255) NOT NULL, `username` varchar(255) NOT NULL, `passwordHash` varchar(255) NOT NULL, `salt` varchar(255) NULL, `provider` varchar(255) NOT NULL, `roles` text NOT NULL, `language` varchar(255) NOT NULL, `resetPasswordToken` varchar(255) NULL, `resetPasswordExpires` datetime NULL, `token` varchar(255) NULL, `apiKey` varchar(255) NULL, `created` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `lastModified` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), UNIQUE INDEX `IDX_e12875dfb3b1d92d7d7c5377e2` (`email`), UNIQUE INDEX `IDX_78a916df40e02a9deb1c4b75ed` (`username`), PRIMARY KEY (`id`)) ENGINE=InnoDB');
|
||||||
await queryRunner.query("CREATE TABLE `form_visitor` (`id` int NOT NULL AUTO_INCREMENT, `referrer` varchar(255) NULL, `ipAddr` varchar(255) NOT NULL, `created` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `updated` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), `formId` int NULL, `geoLocationCountry` varchar(255) NULL, `geoLocationCity` varchar(255) NULL, `deviceLanguage` varchar(255) NULL, `deviceType` varchar(255) NULL, `deviceName` varchar(255) NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB");
|
await queryRunner.query('CREATE TABLE `form_visitor` (`id` int NOT NULL AUTO_INCREMENT, `referrer` varchar(255) NULL, `ipAddr` varchar(255) NOT NULL, `created` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `updated` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), `formId` int NULL, `geoLocationCountry` varchar(255) NULL, `geoLocationCity` varchar(255) NULL, `deviceLanguage` varchar(255) NULL, `deviceType` varchar(255) NULL, `deviceName` varchar(255) NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB');
|
||||||
await queryRunner.query("CREATE TABLE `submission` (`id` int NOT NULL AUTO_INCREMENT, `ipAddr` varchar(255) NOT NULL, `tokenHash` varchar(255) NOT NULL, `timeElapsed` decimal NOT NULL, `percentageComplete` decimal NOT NULL, `created` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `lastModified` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), `formId` int NULL, `visitorId` int NULL, `userId` int NULL, `geoLocationCountry` varchar(255) NULL, `geoLocationCity` varchar(255) NULL, `deviceLanguage` varchar(255) NULL, `deviceType` varchar(255) NULL, `deviceName` varchar(255) NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB");
|
await queryRunner.query('CREATE TABLE `submission` (`id` int NOT NULL AUTO_INCREMENT, `ipAddr` varchar(255) NOT NULL, `tokenHash` varchar(255) NOT NULL, `timeElapsed` decimal NOT NULL, `percentageComplete` decimal NOT NULL, `created` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `lastModified` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), `formId` int NULL, `visitorId` int NULL, `userId` int NULL, `geoLocationCountry` varchar(255) NULL, `geoLocationCity` varchar(255) NULL, `deviceLanguage` varchar(255) NULL, `deviceType` varchar(255) NULL, `deviceName` varchar(255) NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB');
|
||||||
await queryRunner.query("CREATE TABLE `form` (`id` int NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `language` varchar(10) NOT NULL, `showFooter` tinyint NOT NULL, `isLive` tinyint NOT NULL, `created` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `lastModified` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), `adminId` int NULL, `startPageId` int NULL, `endPageId` int NULL, `analyticsGacode` varchar(255) NULL, `designFont` varchar(255) NULL, `designColorsBackground` varchar(255) NULL, `designColorsQuestion` varchar(255) NULL, `designColorsAnswer` varchar(255) NULL, `designColorsButton` varchar(255) NULL, `designColorsButtonactive` varchar(255) NULL, `designColorsButtontext` varchar(255) NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB");
|
await queryRunner.query('CREATE TABLE `form` (`id` int NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `language` varchar(10) NOT NULL, `showFooter` tinyint NOT NULL, `isLive` tinyint NOT NULL, `created` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `lastModified` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), `adminId` int NULL, `startPageId` int NULL, `endPageId` int NULL, `analyticsGacode` varchar(255) NULL, `designFont` varchar(255) NULL, `designColorsBackground` varchar(255) NULL, `designColorsQuestion` varchar(255) NULL, `designColorsAnswer` varchar(255) NULL, `designColorsButton` varchar(255) NULL, `designColorsButtonactive` varchar(255) NULL, `designColorsButtontext` varchar(255) NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB');
|
||||||
await queryRunner.query("ALTER TABLE `form_field_logic` ADD CONSTRAINT `FK_6098b83f6759445d8cfdd03d545` FOREIGN KEY (`fieldId`) REFERENCES `form_field`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION");
|
await queryRunner.query('ALTER TABLE `form_field_logic` ADD CONSTRAINT `FK_6098b83f6759445d8cfdd03d545` FOREIGN KEY (`fieldId`) REFERENCES `form_field`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query("ALTER TABLE `form_field_logic` ADD CONSTRAINT `FK_4a8019f2b753cfb3216dc3001a6` FOREIGN KEY (`jumpToId`) REFERENCES `form_field`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION");
|
await queryRunner.query('ALTER TABLE `form_field_logic` ADD CONSTRAINT `FK_4a8019f2b753cfb3216dc3001a6` FOREIGN KEY (`jumpToId`) REFERENCES `form_field`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query("ALTER TABLE `form_field_option` ADD CONSTRAINT `FK_c4484ad12c2c56db31dffdbfe97` FOREIGN KEY (`fieldId`) REFERENCES `form_field`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION");
|
await queryRunner.query('ALTER TABLE `form_field_option` ADD CONSTRAINT `FK_c4484ad12c2c56db31dffdbfe97` FOREIGN KEY (`fieldId`) REFERENCES `form_field`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query("ALTER TABLE `form_field` ADD CONSTRAINT `FK_2d83d8a334dd66445db13f92b77` FOREIGN KEY (`formId`) REFERENCES `form`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION");
|
await queryRunner.query('ALTER TABLE `form_field` ADD CONSTRAINT `FK_2d83d8a334dd66445db13f92b77` FOREIGN KEY (`formId`) REFERENCES `form`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query("ALTER TABLE `form_hook` ADD CONSTRAINT `FK_bbeb4d224d8857fd5a458538a30` FOREIGN KEY (`formId`) REFERENCES `form`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION");
|
await queryRunner.query('ALTER TABLE `form_hook` ADD CONSTRAINT `FK_bbeb4d224d8857fd5a458538a30` FOREIGN KEY (`formId`) REFERENCES `form`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query("ALTER TABLE `form_notification` ADD CONSTRAINT `FK_a9ed55144108ded893b502d6321` FOREIGN KEY (`formId`) REFERENCES `form`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION");
|
await queryRunner.query('ALTER TABLE `form_notification` ADD CONSTRAINT `FK_a9ed55144108ded893b502d6321` FOREIGN KEY (`formId`) REFERENCES `form`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query("ALTER TABLE `form_notification` ADD CONSTRAINT `FK_0876741ce2acdaee4553d7a3bbd` FOREIGN KEY (`fromFieldId`) REFERENCES `form_field`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION");
|
await queryRunner.query('ALTER TABLE `form_notification` ADD CONSTRAINT `FK_0876741ce2acdaee4553d7a3bbd` FOREIGN KEY (`fromFieldId`) REFERENCES `form_field`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query("ALTER TABLE `form_notification` ADD CONSTRAINT `FK_4915ebae53e09b732322d0ff6ed` FOREIGN KEY (`toFieldId`) REFERENCES `form_field`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION");
|
await queryRunner.query('ALTER TABLE `form_notification` ADD CONSTRAINT `FK_4915ebae53e09b732322d0ff6ed` FOREIGN KEY (`toFieldId`) REFERENCES `form_field`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query("ALTER TABLE `page_button` ADD CONSTRAINT `FK_d9f099286b75fa0034dcd8cf7c2` FOREIGN KEY (`pageId`) REFERENCES `page`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION");
|
await queryRunner.query('ALTER TABLE `page_button` ADD CONSTRAINT `FK_d9f099286b75fa0034dcd8cf7c2` FOREIGN KEY (`pageId`) REFERENCES `page`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query("ALTER TABLE `submission_field` ADD CONSTRAINT `FK_16fae661ce5b10f27abe2e524a0` FOREIGN KEY (`submissionId`) REFERENCES `submission`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION");
|
await queryRunner.query('ALTER TABLE `submission_field` ADD CONSTRAINT `FK_16fae661ce5b10f27abe2e524a0` FOREIGN KEY (`submissionId`) REFERENCES `submission`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query("ALTER TABLE `submission_field` ADD CONSTRAINT `FK_5befa92da2370b7eb1cab6ae30a` FOREIGN KEY (`fieldId`) REFERENCES `form_field`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION");
|
await queryRunner.query('ALTER TABLE `submission_field` ADD CONSTRAINT `FK_5befa92da2370b7eb1cab6ae30a` FOREIGN KEY (`fieldId`) REFERENCES `form_field`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query("ALTER TABLE `form_visitor` ADD CONSTRAINT `FK_72ade6c3a3e55d1fce94300f8b6` FOREIGN KEY (`formId`) REFERENCES `form`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION");
|
await queryRunner.query('ALTER TABLE `form_visitor` ADD CONSTRAINT `FK_72ade6c3a3e55d1fce94300f8b6` FOREIGN KEY (`formId`) REFERENCES `form`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query("ALTER TABLE `submission` ADD CONSTRAINT `FK_6090e1d5cbf3433ffd14e3b53e7` FOREIGN KEY (`formId`) REFERENCES `form`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION");
|
await queryRunner.query('ALTER TABLE `submission` ADD CONSTRAINT `FK_6090e1d5cbf3433ffd14e3b53e7` FOREIGN KEY (`formId`) REFERENCES `form`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query("ALTER TABLE `submission` ADD CONSTRAINT `FK_95b73c7faf2c199f005fda5e8c8` FOREIGN KEY (`visitorId`) REFERENCES `form_visitor`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION");
|
await queryRunner.query('ALTER TABLE `submission` ADD CONSTRAINT `FK_95b73c7faf2c199f005fda5e8c8` FOREIGN KEY (`visitorId`) REFERENCES `form_visitor`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query("ALTER TABLE `submission` ADD CONSTRAINT `FK_7bd626272858ef6464aa2579094` FOREIGN KEY (`userId`) REFERENCES `user`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION");
|
await queryRunner.query('ALTER TABLE `submission` ADD CONSTRAINT `FK_7bd626272858ef6464aa2579094` FOREIGN KEY (`userId`) REFERENCES `user`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query("ALTER TABLE `form` ADD CONSTRAINT `FK_a7cb33580bca2b362e5e34fdfcd` FOREIGN KEY (`adminId`) REFERENCES `user`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION");
|
await queryRunner.query('ALTER TABLE `form` ADD CONSTRAINT `FK_a7cb33580bca2b362e5e34fdfcd` FOREIGN KEY (`adminId`) REFERENCES `user`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query("ALTER TABLE `form` ADD CONSTRAINT `FK_023d9cf1d97e93facc96c86ca70` FOREIGN KEY (`startPageId`) REFERENCES `page`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION");
|
await queryRunner.query('ALTER TABLE `form` ADD CONSTRAINT `FK_023d9cf1d97e93facc96c86ca70` FOREIGN KEY (`startPageId`) REFERENCES `page`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query("ALTER TABLE `form` ADD CONSTRAINT `FK_e5d158932e43cfbf9958931ee01` FOREIGN KEY (`endPageId`) REFERENCES `page`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION");
|
await queryRunner.query('ALTER TABLE `form` ADD CONSTRAINT `FK_e5d158932e43cfbf9958931ee01` FOREIGN KEY (`endPageId`) REFERENCES `page`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
}
|
}
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||||
await queryRunner.query("ALTER TABLE `form` DROP FOREIGN KEY `FK_e5d158932e43cfbf9958931ee01`");
|
await queryRunner.query('ALTER TABLE `form` DROP FOREIGN KEY `FK_e5d158932e43cfbf9958931ee01`');
|
||||||
await queryRunner.query("ALTER TABLE `form` DROP FOREIGN KEY `FK_023d9cf1d97e93facc96c86ca70`");
|
await queryRunner.query('ALTER TABLE `form` DROP FOREIGN KEY `FK_023d9cf1d97e93facc96c86ca70`');
|
||||||
await queryRunner.query("ALTER TABLE `form` DROP FOREIGN KEY `FK_a7cb33580bca2b362e5e34fdfcd`");
|
await queryRunner.query('ALTER TABLE `form` DROP FOREIGN KEY `FK_a7cb33580bca2b362e5e34fdfcd`');
|
||||||
await queryRunner.query("ALTER TABLE `submission` DROP FOREIGN KEY `FK_7bd626272858ef6464aa2579094`");
|
await queryRunner.query('ALTER TABLE `submission` DROP FOREIGN KEY `FK_7bd626272858ef6464aa2579094`');
|
||||||
await queryRunner.query("ALTER TABLE `submission` DROP FOREIGN KEY `FK_95b73c7faf2c199f005fda5e8c8`");
|
await queryRunner.query('ALTER TABLE `submission` DROP FOREIGN KEY `FK_95b73c7faf2c199f005fda5e8c8`');
|
||||||
await queryRunner.query("ALTER TABLE `submission` DROP FOREIGN KEY `FK_6090e1d5cbf3433ffd14e3b53e7`");
|
await queryRunner.query('ALTER TABLE `submission` DROP FOREIGN KEY `FK_6090e1d5cbf3433ffd14e3b53e7`');
|
||||||
await queryRunner.query("ALTER TABLE `form_visitor` DROP FOREIGN KEY `FK_72ade6c3a3e55d1fce94300f8b6`");
|
await queryRunner.query('ALTER TABLE `form_visitor` DROP FOREIGN KEY `FK_72ade6c3a3e55d1fce94300f8b6`');
|
||||||
await queryRunner.query("ALTER TABLE `submission_field` DROP FOREIGN KEY `FK_5befa92da2370b7eb1cab6ae30a`");
|
await queryRunner.query('ALTER TABLE `submission_field` DROP FOREIGN KEY `FK_5befa92da2370b7eb1cab6ae30a`');
|
||||||
await queryRunner.query("ALTER TABLE `submission_field` DROP FOREIGN KEY `FK_16fae661ce5b10f27abe2e524a0`");
|
await queryRunner.query('ALTER TABLE `submission_field` DROP FOREIGN KEY `FK_16fae661ce5b10f27abe2e524a0`');
|
||||||
await queryRunner.query("ALTER TABLE `page_button` DROP FOREIGN KEY `FK_d9f099286b75fa0034dcd8cf7c2`");
|
await queryRunner.query('ALTER TABLE `page_button` DROP FOREIGN KEY `FK_d9f099286b75fa0034dcd8cf7c2`');
|
||||||
await queryRunner.query("ALTER TABLE `form_notification` DROP FOREIGN KEY `FK_4915ebae53e09b732322d0ff6ed`");
|
await queryRunner.query('ALTER TABLE `form_notification` DROP FOREIGN KEY `FK_4915ebae53e09b732322d0ff6ed`');
|
||||||
await queryRunner.query("ALTER TABLE `form_notification` DROP FOREIGN KEY `FK_0876741ce2acdaee4553d7a3bbd`");
|
await queryRunner.query('ALTER TABLE `form_notification` DROP FOREIGN KEY `FK_0876741ce2acdaee4553d7a3bbd`');
|
||||||
await queryRunner.query("ALTER TABLE `form_notification` DROP FOREIGN KEY `FK_a9ed55144108ded893b502d6321`");
|
await queryRunner.query('ALTER TABLE `form_notification` DROP FOREIGN KEY `FK_a9ed55144108ded893b502d6321`');
|
||||||
await queryRunner.query("ALTER TABLE `form_hook` DROP FOREIGN KEY `FK_bbeb4d224d8857fd5a458538a30`");
|
await queryRunner.query('ALTER TABLE `form_hook` DROP FOREIGN KEY `FK_bbeb4d224d8857fd5a458538a30`');
|
||||||
await queryRunner.query("ALTER TABLE `form_field` DROP FOREIGN KEY `FK_2d83d8a334dd66445db13f92b77`");
|
await queryRunner.query('ALTER TABLE `form_field` DROP FOREIGN KEY `FK_2d83d8a334dd66445db13f92b77`');
|
||||||
await queryRunner.query("ALTER TABLE `form_field_option` DROP FOREIGN KEY `FK_c4484ad12c2c56db31dffdbfe97`");
|
await queryRunner.query('ALTER TABLE `form_field_option` DROP FOREIGN KEY `FK_c4484ad12c2c56db31dffdbfe97`');
|
||||||
await queryRunner.query("ALTER TABLE `form_field_logic` DROP FOREIGN KEY `FK_4a8019f2b753cfb3216dc3001a6`");
|
await queryRunner.query('ALTER TABLE `form_field_logic` DROP FOREIGN KEY `FK_4a8019f2b753cfb3216dc3001a6`');
|
||||||
await queryRunner.query("ALTER TABLE `form_field_logic` DROP FOREIGN KEY `FK_6098b83f6759445d8cfdd03d545`");
|
await queryRunner.query('ALTER TABLE `form_field_logic` DROP FOREIGN KEY `FK_6098b83f6759445d8cfdd03d545`');
|
||||||
await queryRunner.query("DROP TABLE `form`");
|
await queryRunner.query('DROP TABLE `form`');
|
||||||
await queryRunner.query("DROP TABLE `submission`");
|
await queryRunner.query('DROP TABLE `submission`');
|
||||||
await queryRunner.query("DROP TABLE `form_visitor`");
|
await queryRunner.query('DROP TABLE `form_visitor`');
|
||||||
await queryRunner.query("DROP INDEX `IDX_78a916df40e02a9deb1c4b75ed` ON `user`");
|
await queryRunner.query('DROP INDEX `IDX_78a916df40e02a9deb1c4b75ed` ON `user`');
|
||||||
await queryRunner.query("DROP INDEX `IDX_e12875dfb3b1d92d7d7c5377e2` ON `user`");
|
await queryRunner.query('DROP INDEX `IDX_e12875dfb3b1d92d7d7c5377e2` ON `user`');
|
||||||
await queryRunner.query("DROP TABLE `user`");
|
await queryRunner.query('DROP TABLE `user`');
|
||||||
await queryRunner.query("DROP TABLE `submission_field`");
|
await queryRunner.query('DROP TABLE `submission_field`');
|
||||||
await queryRunner.query("DROP TABLE `page`");
|
await queryRunner.query('DROP TABLE `page`');
|
||||||
await queryRunner.query("DROP TABLE `page_button`");
|
await queryRunner.query('DROP TABLE `page_button`');
|
||||||
await queryRunner.query("DROP TABLE `form_notification`");
|
await queryRunner.query('DROP TABLE `form_notification`');
|
||||||
await queryRunner.query("DROP TABLE `form_hook`");
|
await queryRunner.query('DROP TABLE `form_hook`');
|
||||||
await queryRunner.query("DROP TABLE `form_field`");
|
await queryRunner.query('DROP TABLE `form_field`');
|
||||||
await queryRunner.query("DROP TABLE `form_field_option`");
|
await queryRunner.query('DROP TABLE `form_field_option`');
|
||||||
await queryRunner.query("DROP TABLE `form_field_logic`");
|
await queryRunner.query('DROP TABLE `form_field_logic`');
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,14 +1,14 @@
|
|||||||
import { MigrationInterface, QueryRunner } from "typeorm"
|
import { MigrationInterface, QueryRunner } from 'typeorm'
|
||||||
|
|
||||||
export class layout1621078163528 implements MigrationInterface {
|
export class layout1621078163528 implements MigrationInterface {
|
||||||
name = 'layout1621078163528'
|
name = 'layout1621078163528'
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||||
await queryRunner.query("ALTER TABLE `form` ADD `designLayout` varchar(255) NULL");
|
await queryRunner.query('ALTER TABLE `form` ADD `designLayout` varchar(255) NULL');
|
||||||
}
|
}
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||||
await queryRunner.query("ALTER TABLE `form` DROP COLUMN `designLayout`");
|
await queryRunner.query('ALTER TABLE `form` DROP COLUMN `designLayout`');
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,59 +1,59 @@
|
|||||||
import { MigrationInterface, QueryRunner } from "typeorm"
|
import { MigrationInterface, QueryRunner } from 'typeorm'
|
||||||
|
|
||||||
export class initial1619723437787 implements MigrationInterface {
|
export class initial1619723437787 implements MigrationInterface {
|
||||||
name = 'initial1619723437787'
|
name = 'initial1619723437787'
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||||
await queryRunner.query(`CREATE TABLE "form_field_logic" ("id" SERIAL NOT NULL, "formula" character varying NOT NULL, "action" character varying(10) NOT NULL, "visible" boolean, "require" boolean, "disable" boolean, "enabled" boolean NOT NULL, "fieldId" integer, "jumpToId" integer, CONSTRAINT "PK_c40e7f583854ff1b60900d8cf1b" PRIMARY KEY ("id"))`);
|
await queryRunner.query('CREATE TABLE "form_field_logic" ("id" SERIAL NOT NULL, "formula" character varying NOT NULL, "action" character varying(10) NOT NULL, "visible" boolean, "require" boolean, "disable" boolean, "enabled" boolean NOT NULL, "fieldId" integer, "jumpToId" integer, CONSTRAINT "PK_c40e7f583854ff1b60900d8cf1b" PRIMARY KEY ("id"))');
|
||||||
await queryRunner.query(`CREATE TABLE "form_field_option" ("id" SERIAL NOT NULL, "key" character varying, "title" character varying, "value" character varying NOT NULL, "fieldId" integer, CONSTRAINT "PK_812955356e516819e37b64bf39b" PRIMARY KEY ("id"))`);
|
await queryRunner.query('CREATE TABLE "form_field_option" ("id" SERIAL NOT NULL, "key" character varying, "title" character varying, "value" character varying NOT NULL, "fieldId" integer, CONSTRAINT "PK_812955356e516819e37b64bf39b" PRIMARY KEY ("id"))');
|
||||||
await queryRunner.query(`CREATE TABLE "form_field" ("id" SERIAL NOT NULL, "title" character varying NOT NULL, "description" text NOT NULL, "slug" character varying, "required" boolean NOT NULL, "disabled" boolean NOT NULL, "type" character varying NOT NULL, "value" character varying NOT NULL, "formId" integer, "ratingSteps" integer, "ratingShape" character varying, CONSTRAINT "PK_135904ddb60085b07254ea4f485" PRIMARY KEY ("id"))`);
|
await queryRunner.query('CREATE TABLE "form_field" ("id" SERIAL NOT NULL, "title" character varying NOT NULL, "description" text NOT NULL, "slug" character varying, "required" boolean NOT NULL, "disabled" boolean NOT NULL, "type" character varying NOT NULL, "value" character varying NOT NULL, "formId" integer, "ratingSteps" integer, "ratingShape" character varying, CONSTRAINT "PK_135904ddb60085b07254ea4f485" PRIMARY KEY ("id"))');
|
||||||
await queryRunner.query(`CREATE TABLE "form_hook" ("id" SERIAL NOT NULL, "enabled" boolean NOT NULL, "url" character varying NOT NULL, "format" character varying, "formId" integer, CONSTRAINT "PK_4b63bd9ff09f7b3e5c4a41fcbec" PRIMARY KEY ("id"))`);
|
await queryRunner.query('CREATE TABLE "form_hook" ("id" SERIAL NOT NULL, "enabled" boolean NOT NULL, "url" character varying NOT NULL, "format" character varying, "formId" integer, CONSTRAINT "PK_4b63bd9ff09f7b3e5c4a41fcbec" PRIMARY KEY ("id"))');
|
||||||
await queryRunner.query(`CREATE TABLE "form_notification" ("id" SERIAL NOT NULL, "subject" character varying, "htmlTemplate" character varying, "enabled" boolean NOT NULL, "toEmail" character varying, "fromEmail" character varying, "formId" integer, "fromFieldId" integer, "toFieldId" integer, CONSTRAINT "PK_935306529aed07c9f6628f6e24f" PRIMARY KEY ("id"))`);
|
await queryRunner.query('CREATE TABLE "form_notification" ("id" SERIAL NOT NULL, "subject" character varying, "htmlTemplate" character varying, "enabled" boolean NOT NULL, "toEmail" character varying, "fromEmail" character varying, "formId" integer, "fromFieldId" integer, "toFieldId" integer, CONSTRAINT "PK_935306529aed07c9f6628f6e24f" PRIMARY KEY ("id"))');
|
||||||
await queryRunner.query(`CREATE TABLE "page_button" ("id" SERIAL NOT NULL, "url" character varying, "action" character varying, "text" character varying NOT NULL, "bgColor" character varying, "activeColor" character varying, "color" character varying, "pageId" integer, CONSTRAINT "PK_6609a75a7d82775aac8af1a591c" PRIMARY KEY ("id"))`);
|
await queryRunner.query('CREATE TABLE "page_button" ("id" SERIAL NOT NULL, "url" character varying, "action" character varying, "text" character varying NOT NULL, "bgColor" character varying, "activeColor" character varying, "color" character varying, "pageId" integer, CONSTRAINT "PK_6609a75a7d82775aac8af1a591c" PRIMARY KEY ("id"))');
|
||||||
await queryRunner.query(`CREATE TABLE "page" ("id" SERIAL NOT NULL, "show" boolean NOT NULL, "title" character varying, "paragraph" text, "buttonText" character varying, CONSTRAINT "PK_742f4117e065c5b6ad21b37ba1f" PRIMARY KEY ("id"))`);
|
await queryRunner.query('CREATE TABLE "page" ("id" SERIAL NOT NULL, "show" boolean NOT NULL, "title" character varying, "paragraph" text, "buttonText" character varying, CONSTRAINT "PK_742f4117e065c5b6ad21b37ba1f" PRIMARY KEY ("id"))');
|
||||||
await queryRunner.query(`CREATE TABLE "submission_field" ("id" SERIAL NOT NULL, "fieldType" character varying NOT NULL, "fieldValue" character varying NOT NULL, "submissionId" integer, "fieldId" integer, CONSTRAINT "PK_5443f5f769fce3107982c16e0b5" PRIMARY KEY ("id"))`);
|
await queryRunner.query('CREATE TABLE "submission_field" ("id" SERIAL NOT NULL, "fieldType" character varying NOT NULL, "fieldValue" character varying NOT NULL, "submissionId" integer, "fieldId" integer, CONSTRAINT "PK_5443f5f769fce3107982c16e0b5" PRIMARY KEY ("id"))');
|
||||||
await queryRunner.query(`CREATE TABLE "user" ("id" SERIAL NOT NULL, "firstName" character varying, "lastName" character varying, "email" character varying(255) NOT NULL, "username" character varying(255) NOT NULL, "passwordHash" character varying NOT NULL, "salt" character varying, "provider" character varying NOT NULL, "roles" text NOT NULL, "language" character varying NOT NULL, "resetPasswordToken" character varying, "resetPasswordExpires" TIMESTAMP, "token" character varying, "apiKey" character varying, "created" TIMESTAMP NOT NULL DEFAULT now(), "lastModified" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "UQ_e12875dfb3b1d92d7d7c5377e22" UNIQUE ("email"), CONSTRAINT "UQ_78a916df40e02a9deb1c4b75edb" UNIQUE ("username"), CONSTRAINT "PK_cace4a159ff9f2512dd42373760" PRIMARY KEY ("id"))`);
|
await queryRunner.query('CREATE TABLE "user" ("id" SERIAL NOT NULL, "firstName" character varying, "lastName" character varying, "email" character varying(255) NOT NULL, "username" character varying(255) NOT NULL, "passwordHash" character varying NOT NULL, "salt" character varying, "provider" character varying NOT NULL, "roles" text NOT NULL, "language" character varying NOT NULL, "resetPasswordToken" character varying, "resetPasswordExpires" TIMESTAMP, "token" character varying, "apiKey" character varying, "created" TIMESTAMP NOT NULL DEFAULT now(), "lastModified" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "UQ_e12875dfb3b1d92d7d7c5377e22" UNIQUE ("email"), CONSTRAINT "UQ_78a916df40e02a9deb1c4b75edb" UNIQUE ("username"), CONSTRAINT "PK_cace4a159ff9f2512dd42373760" PRIMARY KEY ("id"))');
|
||||||
await queryRunner.query(`CREATE TABLE "form_visitor" ("id" SERIAL NOT NULL, "referrer" character varying, "ipAddr" character varying NOT NULL, "created" TIMESTAMP NOT NULL DEFAULT now(), "updated" TIMESTAMP NOT NULL DEFAULT now(), "formId" integer, "geoLocationCountry" character varying, "geoLocationCity" character varying, "deviceLanguage" character varying, "deviceType" character varying, "deviceName" character varying, CONSTRAINT "PK_74224dc63e13cf5cb5f0420e65b" PRIMARY KEY ("id"))`);
|
await queryRunner.query('CREATE TABLE "form_visitor" ("id" SERIAL NOT NULL, "referrer" character varying, "ipAddr" character varying NOT NULL, "created" TIMESTAMP NOT NULL DEFAULT now(), "updated" TIMESTAMP NOT NULL DEFAULT now(), "formId" integer, "geoLocationCountry" character varying, "geoLocationCity" character varying, "deviceLanguage" character varying, "deviceType" character varying, "deviceName" character varying, CONSTRAINT "PK_74224dc63e13cf5cb5f0420e65b" PRIMARY KEY ("id"))');
|
||||||
await queryRunner.query(`CREATE TABLE "submission" ("id" SERIAL NOT NULL, "ipAddr" character varying NOT NULL, "tokenHash" character varying NOT NULL, "timeElapsed" numeric NOT NULL, "percentageComplete" numeric NOT NULL, "created" TIMESTAMP NOT NULL DEFAULT now(), "lastModified" TIMESTAMP NOT NULL DEFAULT now(), "formId" integer, "visitorId" integer, "userId" integer, "geoLocationCountry" character varying, "geoLocationCity" character varying, "deviceLanguage" character varying, "deviceType" character varying, "deviceName" character varying, CONSTRAINT "PK_7faa571d0e4a7076e85890c9bd0" PRIMARY KEY ("id"))`);
|
await queryRunner.query('CREATE TABLE "submission" ("id" SERIAL NOT NULL, "ipAddr" character varying NOT NULL, "tokenHash" character varying NOT NULL, "timeElapsed" numeric NOT NULL, "percentageComplete" numeric NOT NULL, "created" TIMESTAMP NOT NULL DEFAULT now(), "lastModified" TIMESTAMP NOT NULL DEFAULT now(), "formId" integer, "visitorId" integer, "userId" integer, "geoLocationCountry" character varying, "geoLocationCity" character varying, "deviceLanguage" character varying, "deviceType" character varying, "deviceName" character varying, CONSTRAINT "PK_7faa571d0e4a7076e85890c9bd0" PRIMARY KEY ("id"))');
|
||||||
await queryRunner.query(`CREATE TABLE "form" ("id" SERIAL NOT NULL, "title" character varying NOT NULL, "language" character varying(10) NOT NULL, "showFooter" boolean NOT NULL, "isLive" boolean NOT NULL, "created" TIMESTAMP NOT NULL DEFAULT now(), "lastModified" TIMESTAMP NOT NULL DEFAULT now(), "adminId" integer, "startPageId" integer, "endPageId" integer, "analyticsGacode" character varying, "designFont" character varying, "designColorsBackground" character varying, "designColorsQuestion" character varying, "designColorsAnswer" character varying, "designColorsButton" character varying, "designColorsButtonactive" character varying, "designColorsButtontext" character varying, CONSTRAINT "PK_8f72b95aa2f8ba82cf95dc7579e" PRIMARY KEY ("id"))`);
|
await queryRunner.query('CREATE TABLE "form" ("id" SERIAL NOT NULL, "title" character varying NOT NULL, "language" character varying(10) NOT NULL, "showFooter" boolean NOT NULL, "isLive" boolean NOT NULL, "created" TIMESTAMP NOT NULL DEFAULT now(), "lastModified" TIMESTAMP NOT NULL DEFAULT now(), "adminId" integer, "startPageId" integer, "endPageId" integer, "analyticsGacode" character varying, "designFont" character varying, "designColorsBackground" character varying, "designColorsQuestion" character varying, "designColorsAnswer" character varying, "designColorsButton" character varying, "designColorsButtonactive" character varying, "designColorsButtontext" character varying, CONSTRAINT "PK_8f72b95aa2f8ba82cf95dc7579e" PRIMARY KEY ("id"))');
|
||||||
await queryRunner.query(`ALTER TABLE "form_field_logic" ADD CONSTRAINT "FK_6098b83f6759445d8cfdd03d545" FOREIGN KEY ("fieldId") REFERENCES "form_field"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
|
await queryRunner.query('ALTER TABLE "form_field_logic" ADD CONSTRAINT "FK_6098b83f6759445d8cfdd03d545" FOREIGN KEY ("fieldId") REFERENCES "form_field"("id") ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query(`ALTER TABLE "form_field_logic" ADD CONSTRAINT "FK_4a8019f2b753cfb3216dc3001a6" FOREIGN KEY ("jumpToId") REFERENCES "form_field"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
|
await queryRunner.query('ALTER TABLE "form_field_logic" ADD CONSTRAINT "FK_4a8019f2b753cfb3216dc3001a6" FOREIGN KEY ("jumpToId") REFERENCES "form_field"("id") ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query(`ALTER TABLE "form_field_option" ADD CONSTRAINT "FK_c4484ad12c2c56db31dffdbfe97" FOREIGN KEY ("fieldId") REFERENCES "form_field"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
|
await queryRunner.query('ALTER TABLE "form_field_option" ADD CONSTRAINT "FK_c4484ad12c2c56db31dffdbfe97" FOREIGN KEY ("fieldId") REFERENCES "form_field"("id") ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query(`ALTER TABLE "form_field" ADD CONSTRAINT "FK_2d83d8a334dd66445db13f92b77" FOREIGN KEY ("formId") REFERENCES "form"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
|
await queryRunner.query('ALTER TABLE "form_field" ADD CONSTRAINT "FK_2d83d8a334dd66445db13f92b77" FOREIGN KEY ("formId") REFERENCES "form"("id") ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query(`ALTER TABLE "form_hook" ADD CONSTRAINT "FK_bbeb4d224d8857fd5a458538a30" FOREIGN KEY ("formId") REFERENCES "form"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
|
await queryRunner.query('ALTER TABLE "form_hook" ADD CONSTRAINT "FK_bbeb4d224d8857fd5a458538a30" FOREIGN KEY ("formId") REFERENCES "form"("id") ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query(`ALTER TABLE "form_notification" ADD CONSTRAINT "FK_a9ed55144108ded893b502d6321" FOREIGN KEY ("formId") REFERENCES "form"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
|
await queryRunner.query('ALTER TABLE "form_notification" ADD CONSTRAINT "FK_a9ed55144108ded893b502d6321" FOREIGN KEY ("formId") REFERENCES "form"("id") ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query(`ALTER TABLE "form_notification" ADD CONSTRAINT "FK_0876741ce2acdaee4553d7a3bbd" FOREIGN KEY ("fromFieldId") REFERENCES "form_field"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
|
await queryRunner.query('ALTER TABLE "form_notification" ADD CONSTRAINT "FK_0876741ce2acdaee4553d7a3bbd" FOREIGN KEY ("fromFieldId") REFERENCES "form_field"("id") ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query(`ALTER TABLE "form_notification" ADD CONSTRAINT "FK_4915ebae53e09b732322d0ff6ed" FOREIGN KEY ("toFieldId") REFERENCES "form_field"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
|
await queryRunner.query('ALTER TABLE "form_notification" ADD CONSTRAINT "FK_4915ebae53e09b732322d0ff6ed" FOREIGN KEY ("toFieldId") REFERENCES "form_field"("id") ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query(`ALTER TABLE "page_button" ADD CONSTRAINT "FK_d9f099286b75fa0034dcd8cf7c2" FOREIGN KEY ("pageId") REFERENCES "page"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
|
await queryRunner.query('ALTER TABLE "page_button" ADD CONSTRAINT "FK_d9f099286b75fa0034dcd8cf7c2" FOREIGN KEY ("pageId") REFERENCES "page"("id") ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query(`ALTER TABLE "submission_field" ADD CONSTRAINT "FK_16fae661ce5b10f27abe2e524a0" FOREIGN KEY ("submissionId") REFERENCES "submission"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
|
await queryRunner.query('ALTER TABLE "submission_field" ADD CONSTRAINT "FK_16fae661ce5b10f27abe2e524a0" FOREIGN KEY ("submissionId") REFERENCES "submission"("id") ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query(`ALTER TABLE "submission_field" ADD CONSTRAINT "FK_5befa92da2370b7eb1cab6ae30a" FOREIGN KEY ("fieldId") REFERENCES "form_field"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
|
await queryRunner.query('ALTER TABLE "submission_field" ADD CONSTRAINT "FK_5befa92da2370b7eb1cab6ae30a" FOREIGN KEY ("fieldId") REFERENCES "form_field"("id") ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query(`ALTER TABLE "form_visitor" ADD CONSTRAINT "FK_72ade6c3a3e55d1fce94300f8b6" FOREIGN KEY ("formId") REFERENCES "form"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
|
await queryRunner.query('ALTER TABLE "form_visitor" ADD CONSTRAINT "FK_72ade6c3a3e55d1fce94300f8b6" FOREIGN KEY ("formId") REFERENCES "form"("id") ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query(`ALTER TABLE "submission" ADD CONSTRAINT "FK_6090e1d5cbf3433ffd14e3b53e7" FOREIGN KEY ("formId") REFERENCES "form"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
|
await queryRunner.query('ALTER TABLE "submission" ADD CONSTRAINT "FK_6090e1d5cbf3433ffd14e3b53e7" FOREIGN KEY ("formId") REFERENCES "form"("id") ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query(`ALTER TABLE "submission" ADD CONSTRAINT "FK_95b73c7faf2c199f005fda5e8c8" FOREIGN KEY ("visitorId") REFERENCES "form_visitor"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
|
await queryRunner.query('ALTER TABLE "submission" ADD CONSTRAINT "FK_95b73c7faf2c199f005fda5e8c8" FOREIGN KEY ("visitorId") REFERENCES "form_visitor"("id") ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query(`ALTER TABLE "submission" ADD CONSTRAINT "FK_7bd626272858ef6464aa2579094" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
|
await queryRunner.query('ALTER TABLE "submission" ADD CONSTRAINT "FK_7bd626272858ef6464aa2579094" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query(`ALTER TABLE "form" ADD CONSTRAINT "FK_a7cb33580bca2b362e5e34fdfcd" FOREIGN KEY ("adminId") REFERENCES "user"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
|
await queryRunner.query('ALTER TABLE "form" ADD CONSTRAINT "FK_a7cb33580bca2b362e5e34fdfcd" FOREIGN KEY ("adminId") REFERENCES "user"("id") ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query(`ALTER TABLE "form" ADD CONSTRAINT "FK_023d9cf1d97e93facc96c86ca70" FOREIGN KEY ("startPageId") REFERENCES "page"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
|
await queryRunner.query('ALTER TABLE "form" ADD CONSTRAINT "FK_023d9cf1d97e93facc96c86ca70" FOREIGN KEY ("startPageId") REFERENCES "page"("id") ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
await queryRunner.query(`ALTER TABLE "form" ADD CONSTRAINT "FK_e5d158932e43cfbf9958931ee01" FOREIGN KEY ("endPageId") REFERENCES "page"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
|
await queryRunner.query('ALTER TABLE "form" ADD CONSTRAINT "FK_e5d158932e43cfbf9958931ee01" FOREIGN KEY ("endPageId") REFERENCES "page"("id") ON DELETE NO ACTION ON UPDATE NO ACTION');
|
||||||
}
|
}
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||||
await queryRunner.query(`ALTER TABLE "form" DROP CONSTRAINT "FK_e5d158932e43cfbf9958931ee01"`);
|
await queryRunner.query('ALTER TABLE "form" DROP CONSTRAINT "FK_e5d158932e43cfbf9958931ee01"');
|
||||||
await queryRunner.query(`ALTER TABLE "form" DROP CONSTRAINT "FK_023d9cf1d97e93facc96c86ca70"`);
|
await queryRunner.query('ALTER TABLE "form" DROP CONSTRAINT "FK_023d9cf1d97e93facc96c86ca70"');
|
||||||
await queryRunner.query(`ALTER TABLE "form" DROP CONSTRAINT "FK_a7cb33580bca2b362e5e34fdfcd"`);
|
await queryRunner.query('ALTER TABLE "form" DROP CONSTRAINT "FK_a7cb33580bca2b362e5e34fdfcd"');
|
||||||
await queryRunner.query(`ALTER TABLE "submission" DROP CONSTRAINT "FK_7bd626272858ef6464aa2579094"`);
|
await queryRunner.query('ALTER TABLE "submission" DROP CONSTRAINT "FK_7bd626272858ef6464aa2579094"');
|
||||||
await queryRunner.query(`ALTER TABLE "submission" DROP CONSTRAINT "FK_95b73c7faf2c199f005fda5e8c8"`);
|
await queryRunner.query('ALTER TABLE "submission" DROP CONSTRAINT "FK_95b73c7faf2c199f005fda5e8c8"');
|
||||||
await queryRunner.query(`ALTER TABLE "submission" DROP CONSTRAINT "FK_6090e1d5cbf3433ffd14e3b53e7"`);
|
await queryRunner.query('ALTER TABLE "submission" DROP CONSTRAINT "FK_6090e1d5cbf3433ffd14e3b53e7"');
|
||||||
await queryRunner.query(`ALTER TABLE "form_visitor" DROP CONSTRAINT "FK_72ade6c3a3e55d1fce94300f8b6"`);
|
await queryRunner.query('ALTER TABLE "form_visitor" DROP CONSTRAINT "FK_72ade6c3a3e55d1fce94300f8b6"');
|
||||||
await queryRunner.query(`ALTER TABLE "submission_field" DROP CONSTRAINT "FK_5befa92da2370b7eb1cab6ae30a"`);
|
await queryRunner.query('ALTER TABLE "submission_field" DROP CONSTRAINT "FK_5befa92da2370b7eb1cab6ae30a"');
|
||||||
await queryRunner.query(`ALTER TABLE "submission_field" DROP CONSTRAINT "FK_16fae661ce5b10f27abe2e524a0"`);
|
await queryRunner.query('ALTER TABLE "submission_field" DROP CONSTRAINT "FK_16fae661ce5b10f27abe2e524a0"');
|
||||||
await queryRunner.query(`ALTER TABLE "page_button" DROP CONSTRAINT "FK_d9f099286b75fa0034dcd8cf7c2"`);
|
await queryRunner.query('ALTER TABLE "page_button" DROP CONSTRAINT "FK_d9f099286b75fa0034dcd8cf7c2"');
|
||||||
await queryRunner.query(`ALTER TABLE "form_notification" DROP CONSTRAINT "FK_4915ebae53e09b732322d0ff6ed"`);
|
await queryRunner.query('ALTER TABLE "form_notification" DROP CONSTRAINT "FK_4915ebae53e09b732322d0ff6ed"');
|
||||||
await queryRunner.query(`ALTER TABLE "form_notification" DROP CONSTRAINT "FK_0876741ce2acdaee4553d7a3bbd"`);
|
await queryRunner.query('ALTER TABLE "form_notification" DROP CONSTRAINT "FK_0876741ce2acdaee4553d7a3bbd"');
|
||||||
await queryRunner.query(`ALTER TABLE "form_notification" DROP CONSTRAINT "FK_a9ed55144108ded893b502d6321"`);
|
await queryRunner.query('ALTER TABLE "form_notification" DROP CONSTRAINT "FK_a9ed55144108ded893b502d6321"');
|
||||||
await queryRunner.query(`ALTER TABLE "form_hook" DROP CONSTRAINT "FK_bbeb4d224d8857fd5a458538a30"`);
|
await queryRunner.query('ALTER TABLE "form_hook" DROP CONSTRAINT "FK_bbeb4d224d8857fd5a458538a30"');
|
||||||
await queryRunner.query(`ALTER TABLE "form_field" DROP CONSTRAINT "FK_2d83d8a334dd66445db13f92b77"`);
|
await queryRunner.query('ALTER TABLE "form_field" DROP CONSTRAINT "FK_2d83d8a334dd66445db13f92b77"');
|
||||||
await queryRunner.query(`ALTER TABLE "form_field_option" DROP CONSTRAINT "FK_c4484ad12c2c56db31dffdbfe97"`);
|
await queryRunner.query('ALTER TABLE "form_field_option" DROP CONSTRAINT "FK_c4484ad12c2c56db31dffdbfe97"');
|
||||||
await queryRunner.query(`ALTER TABLE "form_field_logic" DROP CONSTRAINT "FK_4a8019f2b753cfb3216dc3001a6"`);
|
await queryRunner.query('ALTER TABLE "form_field_logic" DROP CONSTRAINT "FK_4a8019f2b753cfb3216dc3001a6"');
|
||||||
await queryRunner.query(`ALTER TABLE "form_field_logic" DROP CONSTRAINT "FK_6098b83f6759445d8cfdd03d545"`);
|
await queryRunner.query('ALTER TABLE "form_field_logic" DROP CONSTRAINT "FK_6098b83f6759445d8cfdd03d545"');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,14 +1,14 @@
|
|||||||
import { MigrationInterface, QueryRunner } from "typeorm"
|
import { MigrationInterface, QueryRunner } from 'typeorm'
|
||||||
|
|
||||||
export class layout1621078163528 implements MigrationInterface {
|
export class layout1621078163528 implements MigrationInterface {
|
||||||
name = 'layout1621078163528'
|
name = 'layout1621078163528'
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||||
await queryRunner.query(`ALTER TABLE "form" ADD "designLayout" character varying`);
|
await queryRunner.query('ALTER TABLE "form" ADD "designLayout" character varying');
|
||||||
}
|
}
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||||
await queryRunner.query(`ALTER TABLE "form" DROP COLUMN "designLayout"`);
|
await queryRunner.query('ALTER TABLE "form" DROP COLUMN "designLayout"');
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,35 +1,35 @@
|
|||||||
import { MigrationInterface, QueryRunner } from "typeorm"
|
import { MigrationInterface, QueryRunner } from 'typeorm'
|
||||||
|
|
||||||
export class initial1619723437787 implements MigrationInterface {
|
export class initial1619723437787 implements MigrationInterface {
|
||||||
name = 'initial1619723437787'
|
name = 'initial1619723437787'
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||||
await queryRunner.query(`CREATE TABLE "page" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "show" boolean NOT NULL, "title" varchar, "paragraph" text, "buttonText" varchar)`);
|
await queryRunner.query('CREATE TABLE "page" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "show" boolean NOT NULL, "title" varchar, "paragraph" text, "buttonText" varchar)');
|
||||||
await queryRunner.query(`CREATE TABLE "user" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "firstName" varchar, "lastName" varchar, "email" varchar(255) NOT NULL, "username" varchar(255) NOT NULL, "passwordHash" varchar NOT NULL, "salt" varchar, "provider" varchar NOT NULL, "roles" text NOT NULL, "language" varchar NOT NULL, "resetPasswordToken" varchar, "resetPasswordExpires" datetime, "token" varchar, "apiKey" varchar, "created" datetime NOT NULL DEFAULT (datetime('now')), "lastModified" datetime NOT NULL DEFAULT (datetime('now')), CONSTRAINT "UQ_e12875dfb3b1d92d7d7c5377e22" UNIQUE ("email"), CONSTRAINT "UQ_78a916df40e02a9deb1c4b75edb" UNIQUE ("username"))`);
|
await queryRunner.query('CREATE TABLE "user" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "firstName" varchar, "lastName" varchar, "email" varchar(255) NOT NULL, "username" varchar(255) NOT NULL, "passwordHash" varchar NOT NULL, "salt" varchar, "provider" varchar NOT NULL, "roles" text NOT NULL, "language" varchar NOT NULL, "resetPasswordToken" varchar, "resetPasswordExpires" datetime, "token" varchar, "apiKey" varchar, "created" datetime NOT NULL DEFAULT (datetime(\'now\')), "lastModified" datetime NOT NULL DEFAULT (datetime(\'now\')), CONSTRAINT "UQ_e12875dfb3b1d92d7d7c5377e22" UNIQUE ("email"), CONSTRAINT "UQ_78a916df40e02a9deb1c4b75edb" UNIQUE ("username"))');
|
||||||
await queryRunner.query(`CREATE TABLE "form_field_logic" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "formula" varchar NOT NULL, "action" varchar(10) NOT NULL, "visible" boolean, "require" boolean, "disable" boolean, "enabled" boolean NOT NULL, "fieldId" integer, "jumpToId" integer, CONSTRAINT "FK_6098b83f6759445d8cfdd03d545" FOREIGN KEY ("fieldId") REFERENCES "form_field" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_4a8019f2b753cfb3216dc3001a6" FOREIGN KEY ("jumpToId") REFERENCES "form_field" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)`);
|
await queryRunner.query('CREATE TABLE "form_field_logic" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "formula" varchar NOT NULL, "action" varchar(10) NOT NULL, "visible" boolean, "require" boolean, "disable" boolean, "enabled" boolean NOT NULL, "fieldId" integer, "jumpToId" integer, CONSTRAINT "FK_6098b83f6759445d8cfdd03d545" FOREIGN KEY ("fieldId") REFERENCES "form_field" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_4a8019f2b753cfb3216dc3001a6" FOREIGN KEY ("jumpToId") REFERENCES "form_field" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)');
|
||||||
await queryRunner.query(`CREATE TABLE "form_field_option" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "key" varchar, "title" varchar, "value" varchar NOT NULL, "fieldId" integer, CONSTRAINT "FK_c4484ad12c2c56db31dffdbfe97" FOREIGN KEY ("fieldId") REFERENCES "form_field" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)`);
|
await queryRunner.query('CREATE TABLE "form_field_option" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "key" varchar, "title" varchar, "value" varchar NOT NULL, "fieldId" integer, CONSTRAINT "FK_c4484ad12c2c56db31dffdbfe97" FOREIGN KEY ("fieldId") REFERENCES "form_field" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)');
|
||||||
await queryRunner.query(`CREATE TABLE "form_field" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar NOT NULL, "description" text NOT NULL, "slug" varchar, "required" boolean NOT NULL, "disabled" boolean NOT NULL, "type" varchar NOT NULL, "value" varchar NOT NULL, "formId" integer, "ratingSteps" integer, "ratingShape" varchar, CONSTRAINT "FK_2d83d8a334dd66445db13f92b77" FOREIGN KEY ("formId") REFERENCES "form" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)`);
|
await queryRunner.query('CREATE TABLE "form_field" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar NOT NULL, "description" text NOT NULL, "slug" varchar, "required" boolean NOT NULL, "disabled" boolean NOT NULL, "type" varchar NOT NULL, "value" varchar NOT NULL, "formId" integer, "ratingSteps" integer, "ratingShape" varchar, CONSTRAINT "FK_2d83d8a334dd66445db13f92b77" FOREIGN KEY ("formId") REFERENCES "form" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)');
|
||||||
await queryRunner.query(`CREATE TABLE "form_hook" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "enabled" boolean NOT NULL, "url" varchar NOT NULL, "format" varchar, "formId" integer, CONSTRAINT "FK_bbeb4d224d8857fd5a458538a30" FOREIGN KEY ("formId") REFERENCES "form" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)`);
|
await queryRunner.query('CREATE TABLE "form_hook" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "enabled" boolean NOT NULL, "url" varchar NOT NULL, "format" varchar, "formId" integer, CONSTRAINT "FK_bbeb4d224d8857fd5a458538a30" FOREIGN KEY ("formId") REFERENCES "form" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)');
|
||||||
await queryRunner.query(`CREATE TABLE "form_notification" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "subject" varchar, "htmlTemplate" varchar, "enabled" boolean NOT NULL, "toEmail" varchar, "fromEmail" varchar, "formId" integer, "fromFieldId" integer, "toFieldId" integer, CONSTRAINT "FK_a9ed55144108ded893b502d6321" FOREIGN KEY ("formId") REFERENCES "form" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_0876741ce2acdaee4553d7a3bbd" FOREIGN KEY ("fromFieldId") REFERENCES "form_field" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_4915ebae53e09b732322d0ff6ed" FOREIGN KEY ("toFieldId") REFERENCES "form_field" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)`);
|
await queryRunner.query('CREATE TABLE "form_notification" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "subject" varchar, "htmlTemplate" varchar, "enabled" boolean NOT NULL, "toEmail" varchar, "fromEmail" varchar, "formId" integer, "fromFieldId" integer, "toFieldId" integer, CONSTRAINT "FK_a9ed55144108ded893b502d6321" FOREIGN KEY ("formId") REFERENCES "form" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_0876741ce2acdaee4553d7a3bbd" FOREIGN KEY ("fromFieldId") REFERENCES "form_field" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_4915ebae53e09b732322d0ff6ed" FOREIGN KEY ("toFieldId") REFERENCES "form_field" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)');
|
||||||
await queryRunner.query(`CREATE TABLE "page_button" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "url" varchar, "action" varchar, "text" varchar NOT NULL, "bgColor" varchar, "activeColor" varchar, "color" varchar, "pageId" integer, CONSTRAINT "FK_d9f099286b75fa0034dcd8cf7c2" FOREIGN KEY ("pageId") REFERENCES "page" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)`);
|
await queryRunner.query('CREATE TABLE "page_button" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "url" varchar, "action" varchar, "text" varchar NOT NULL, "bgColor" varchar, "activeColor" varchar, "color" varchar, "pageId" integer, CONSTRAINT "FK_d9f099286b75fa0034dcd8cf7c2" FOREIGN KEY ("pageId") REFERENCES "page" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)');
|
||||||
await queryRunner.query(`CREATE TABLE "submission_field" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "fieldType" varchar NOT NULL, "fieldValue" varchar NOT NULL, "submissionId" integer, "fieldId" integer, CONSTRAINT "FK_16fae661ce5b10f27abe2e524a0" FOREIGN KEY ("submissionId") REFERENCES "submission" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_5befa92da2370b7eb1cab6ae30a" FOREIGN KEY ("fieldId") REFERENCES "form_field" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)`);
|
await queryRunner.query('CREATE TABLE "submission_field" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "fieldType" varchar NOT NULL, "fieldValue" varchar NOT NULL, "submissionId" integer, "fieldId" integer, CONSTRAINT "FK_16fae661ce5b10f27abe2e524a0" FOREIGN KEY ("submissionId") REFERENCES "submission" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_5befa92da2370b7eb1cab6ae30a" FOREIGN KEY ("fieldId") REFERENCES "form_field" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)');
|
||||||
await queryRunner.query(`CREATE TABLE "form_visitor" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "referrer" varchar, "ipAddr" varchar NOT NULL, "created" datetime NOT NULL DEFAULT (datetime('now')), "updated" datetime NOT NULL DEFAULT (datetime('now')), "formId" integer, "geoLocationCountry" varchar, "geoLocationCity" varchar, "deviceLanguage" varchar, "deviceType" varchar, "deviceName" varchar, CONSTRAINT "FK_72ade6c3a3e55d1fce94300f8b6" FOREIGN KEY ("formId") REFERENCES "form" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)`);
|
await queryRunner.query('CREATE TABLE "form_visitor" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "referrer" varchar, "ipAddr" varchar NOT NULL, "created" datetime NOT NULL DEFAULT (datetime(\'now\')), "updated" datetime NOT NULL DEFAULT (datetime(\'now\')), "formId" integer, "geoLocationCountry" varchar, "geoLocationCity" varchar, "deviceLanguage" varchar, "deviceType" varchar, "deviceName" varchar, CONSTRAINT "FK_72ade6c3a3e55d1fce94300f8b6" FOREIGN KEY ("formId") REFERENCES "form" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)');
|
||||||
await queryRunner.query(`CREATE TABLE "submission" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "ipAddr" varchar NOT NULL, "tokenHash" varchar NOT NULL, "timeElapsed" numeric NOT NULL, "percentageComplete" numeric NOT NULL, "created" datetime NOT NULL DEFAULT (datetime('now')), "lastModified" datetime NOT NULL DEFAULT (datetime('now')), "formId" integer, "visitorId" integer, "userId" integer, "geoLocationCountry" varchar, "geoLocationCity" varchar, "deviceLanguage" varchar, "deviceType" varchar, "deviceName" varchar, CONSTRAINT "FK_6090e1d5cbf3433ffd14e3b53e7" FOREIGN KEY ("formId") REFERENCES "form" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_95b73c7faf2c199f005fda5e8c8" FOREIGN KEY ("visitorId") REFERENCES "form_visitor" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_7bd626272858ef6464aa2579094" FOREIGN KEY ("userId") REFERENCES "user" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)`);
|
await queryRunner.query('CREATE TABLE "submission" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "ipAddr" varchar NOT NULL, "tokenHash" varchar NOT NULL, "timeElapsed" numeric NOT NULL, "percentageComplete" numeric NOT NULL, "created" datetime NOT NULL DEFAULT (datetime(\'now\')), "lastModified" datetime NOT NULL DEFAULT (datetime(\'now\')), "formId" integer, "visitorId" integer, "userId" integer, "geoLocationCountry" varchar, "geoLocationCity" varchar, "deviceLanguage" varchar, "deviceType" varchar, "deviceName" varchar, CONSTRAINT "FK_6090e1d5cbf3433ffd14e3b53e7" FOREIGN KEY ("formId") REFERENCES "form" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_95b73c7faf2c199f005fda5e8c8" FOREIGN KEY ("visitorId") REFERENCES "form_visitor" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_7bd626272858ef6464aa2579094" FOREIGN KEY ("userId") REFERENCES "user" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)');
|
||||||
await queryRunner.query(`CREATE TABLE "form" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar NOT NULL, "language" varchar(10) NOT NULL, "showFooter" boolean NOT NULL, "isLive" boolean NOT NULL, "created" datetime NOT NULL DEFAULT (datetime('now')), "lastModified" datetime NOT NULL DEFAULT (datetime('now')), "adminId" integer, "startPageId" integer, "endPageId" integer, "analyticsGacode" varchar, "designFont" varchar, "designColorsBackground" varchar, "designColorsQuestion" varchar, "designColorsAnswer" varchar, "designColorsButton" varchar, "designColorsButtonactive" varchar, "designColorsButtontext" varchar, CONSTRAINT "FK_a7cb33580bca2b362e5e34fdfcd" FOREIGN KEY ("adminId") REFERENCES "user" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_023d9cf1d97e93facc96c86ca70" FOREIGN KEY ("startPageId") REFERENCES "page" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_e5d158932e43cfbf9958931ee01" FOREIGN KEY ("endPageId") REFERENCES "page" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)`);
|
await queryRunner.query('CREATE TABLE "form" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar NOT NULL, "language" varchar(10) NOT NULL, "showFooter" boolean NOT NULL, "isLive" boolean NOT NULL, "created" datetime NOT NULL DEFAULT (datetime(\'now\')), "lastModified" datetime NOT NULL DEFAULT (datetime(\'now\')), "adminId" integer, "startPageId" integer, "endPageId" integer, "analyticsGacode" varchar, "designFont" varchar, "designColorsBackground" varchar, "designColorsQuestion" varchar, "designColorsAnswer" varchar, "designColorsButton" varchar, "designColorsButtonactive" varchar, "designColorsButtontext" varchar, CONSTRAINT "FK_a7cb33580bca2b362e5e34fdfcd" FOREIGN KEY ("adminId") REFERENCES "user" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_023d9cf1d97e93facc96c86ca70" FOREIGN KEY ("startPageId") REFERENCES "page" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_e5d158932e43cfbf9958931ee01" FOREIGN KEY ("endPageId") REFERENCES "page" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)');
|
||||||
}
|
}
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||||
await queryRunner.query(`DROP TABLE "form"`);
|
await queryRunner.query('DROP TABLE "form"');
|
||||||
await queryRunner.query(`DROP TABLE "submission"`);
|
await queryRunner.query('DROP TABLE "submission"');
|
||||||
await queryRunner.query(`DROP TABLE "form_visitor"`);
|
await queryRunner.query('DROP TABLE "form_visitor"');
|
||||||
await queryRunner.query(`DROP TABLE "user"`);
|
await queryRunner.query('DROP TABLE "user"');
|
||||||
await queryRunner.query(`DROP TABLE "submission_field"`);
|
await queryRunner.query('DROP TABLE "submission_field"');
|
||||||
await queryRunner.query(`DROP TABLE "page"`);
|
await queryRunner.query('DROP TABLE "page"');
|
||||||
await queryRunner.query(`DROP TABLE "page_button"`);
|
await queryRunner.query('DROP TABLE "page_button"');
|
||||||
await queryRunner.query(`DROP TABLE "form_notification"`);
|
await queryRunner.query('DROP TABLE "form_notification"');
|
||||||
await queryRunner.query(`DROP TABLE "form_hook"`);
|
await queryRunner.query('DROP TABLE "form_hook"');
|
||||||
await queryRunner.query(`DROP TABLE "form_field"`);
|
await queryRunner.query('DROP TABLE "form_field"');
|
||||||
await queryRunner.query(`DROP TABLE "form_field_option"`);
|
await queryRunner.query('DROP TABLE "form_field_option"');
|
||||||
await queryRunner.query(`DROP TABLE "form_field_logic"`);
|
await queryRunner.query('DROP TABLE "form_field_logic"');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,14 +1,14 @@
|
|||||||
import { MigrationInterface, QueryRunner } from "typeorm"
|
import { MigrationInterface, QueryRunner } from 'typeorm'
|
||||||
|
|
||||||
export class layout1621078163528 implements MigrationInterface {
|
export class layout1621078163528 implements MigrationInterface {
|
||||||
name = 'layout1621078163528'
|
name = 'layout1621078163528'
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||||
await queryRunner.query(`ALTER TABLE "form" ADD "designLayout" character varying`);
|
await queryRunner.query('ALTER TABLE "form" ADD "designLayout" character varying');
|
||||||
}
|
}
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||||
await queryRunner.query(`ALTER TABLE "form" DROP COLUMN "designLayout"`);
|
await queryRunner.query('ALTER TABLE "form" DROP COLUMN "designLayout"');
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { Injectable } from '@nestjs/common'
|
import { Injectable } from '@nestjs/common'
|
||||||
import { Args, Mutation } from '@nestjs/graphql'
|
import { Args, Mutation } from '@nestjs/graphql'
|
||||||
import { PinoLogger } from 'nestjs-pino/dist'
|
import { PinoLogger } from 'nestjs-pino'
|
||||||
import { AuthJwtModel } from '../../dto/auth/auth.jwt.model'
|
import { AuthJwtModel } from '../../dto/auth/auth.jwt.model'
|
||||||
import { UserCreateInput } from '../../dto/user/user.create.input'
|
import { UserCreateInput } from '../../dto/user/user.create.input'
|
||||||
import { AuthService } from '../../service/auth/auth.service'
|
import { AuthService } from '../../service/auth/auth.service'
|
||||||
@ -15,6 +15,7 @@ export class AuthRegisterResolver {
|
|||||||
private readonly auth: AuthService,
|
private readonly auth: AuthService,
|
||||||
private readonly logger: PinoLogger,
|
private readonly logger: PinoLogger,
|
||||||
) {
|
) {
|
||||||
|
logger.setContext(this.constructor.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Mutation(() => AuthJwtModel)
|
@Mutation(() => AuthJwtModel)
|
||||||
|
|||||||
@ -1,13 +1,6 @@
|
|||||||
import { Args, Context, ID, Parent, Query, ResolveField, Resolver } from '@nestjs/graphql'
|
import { Args, Context, ID, Query, Resolver } from '@nestjs/graphql'
|
||||||
import { Roles } from '../../decorator/roles.decorator'
|
|
||||||
import { User } from '../../decorator/user.decorator'
|
import { User } from '../../decorator/user.decorator'
|
||||||
import { DesignModel } from '../../dto/form/design.model'
|
|
||||||
import { FormFieldModel } from '../../dto/form/form.field.model'
|
|
||||||
import { FormHookModel } from '../../dto/form/form.hook.model'
|
|
||||||
import { FormModel } from '../../dto/form/form.model'
|
import { FormModel } from '../../dto/form/form.model'
|
||||||
import { FormNotificationModel } from '../../dto/form/form.notification.model'
|
|
||||||
import { PageModel } from '../../dto/form/page.model'
|
|
||||||
import { UserModel } from '../../dto/user/user.model'
|
|
||||||
import { FormEntity } from '../../entity/form.entity'
|
import { FormEntity } from '../../entity/form.entity'
|
||||||
import { UserEntity } from '../../entity/user.entity'
|
import { UserEntity } from '../../entity/user.entity'
|
||||||
import { FormService } from '../../service/form/form.service'
|
import { FormService } from '../../service/form/form.service'
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { Args, Context, ID, Parent, Query, ResolveField, Resolver } from '@nestjs/graphql'
|
import { Context, Parent, ResolveField, Resolver } from '@nestjs/graphql'
|
||||||
import { Roles } from '../../decorator/roles.decorator'
|
import { Roles } from '../../decorator/roles.decorator'
|
||||||
import { User } from '../../decorator/user.decorator'
|
import { User } from '../../decorator/user.decorator'
|
||||||
import { DesignModel } from '../../dto/form/design.model'
|
import { DesignModel } from '../../dto/form/design.model'
|
||||||
@ -39,7 +39,7 @@ export class FormResolver {
|
|||||||
): Promise<FormHookModel[]> {
|
): Promise<FormHookModel[]> {
|
||||||
const form = await cache.get<FormEntity>(cache.getCacheKey(FormEntity.name, parent.id))
|
const form = await cache.get<FormEntity>(cache.getCacheKey(FormEntity.name, parent.id))
|
||||||
|
|
||||||
return form.hooks?.map(hook => new FormHookModel(hook)) || []
|
return form.hooks?.map(hook => new FormHookModel(hook)) || []
|
||||||
}
|
}
|
||||||
|
|
||||||
@ResolveField('isLive', () => Boolean)
|
@ResolveField('isLive', () => Boolean)
|
||||||
|
|||||||
@ -40,8 +40,12 @@ export class UserResolver {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
async returnFieldForSuperuser<T>(parent: UserEntity, user: UserEntity, callback: (user: UserEntity) => T): Promise<T> {
|
async returnFieldForSuperuser<T>(
|
||||||
if (user.id !== parent.id && !await this.userService.isSuperuser(user)) {
|
parent: UserEntity,
|
||||||
|
user: UserEntity,
|
||||||
|
callback: (user: UserEntity) => T
|
||||||
|
): Promise<T> {
|
||||||
|
if (user.id !== parent.id && !this.userService.isSuperuser(user)) {
|
||||||
throw new Error('No access to roles')
|
throw new Error('No access to roles')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { Injectable } from '@nestjs/common'
|
import { Injectable } from '@nestjs/common'
|
||||||
import { JwtService } from '@nestjs/jwt'
|
import { JwtService } from '@nestjs/jwt'
|
||||||
import { PinoLogger } from 'nestjs-pino/dist'
|
import { PinoLogger } from 'nestjs-pino'
|
||||||
import { AuthJwtModel } from '../../dto/auth/auth.jwt.model'
|
import { AuthJwtModel } from '../../dto/auth/auth.jwt.model'
|
||||||
import { UserEntity } from '../../entity/user.entity'
|
import { UserEntity } from '../../entity/user.entity'
|
||||||
import { UserService } from '../user/user.service'
|
import { UserService } from '../user/user.service'
|
||||||
@ -13,7 +13,9 @@ export class AuthService {
|
|||||||
private jwtService: JwtService,
|
private jwtService: JwtService,
|
||||||
private passwordService: PasswordService,
|
private passwordService: PasswordService,
|
||||||
private logger: PinoLogger,
|
private logger: PinoLogger,
|
||||||
) {}
|
) {
|
||||||
|
logger.setContext(this.constructor.name)
|
||||||
|
}
|
||||||
|
|
||||||
async validateUser(username: string, password: string): Promise<UserEntity> {
|
async validateUser(username: string, password: string): Promise<UserEntity> {
|
||||||
// TODO only allow login for verified users!
|
// TODO only allow login for verified users!
|
||||||
@ -30,7 +32,7 @@ export class AuthService {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
async login(user: UserEntity): Promise<AuthJwtModel> {
|
public login(user: UserEntity): AuthJwtModel {
|
||||||
return new AuthJwtModel({
|
return new AuthJwtModel({
|
||||||
accessToken: this.jwtService.sign({
|
accessToken: this.jwtService.sign({
|
||||||
username: user.username,
|
username: user.username,
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import * as crypto from 'crypto'
|
|||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class PasswordService {
|
export class PasswordService {
|
||||||
async verify (password: string, hash: string, salt?: string): Promise<boolean> {
|
async verify(password: string, hash: string, salt?: string): Promise<boolean> {
|
||||||
if (hash[0] === '$') {
|
if (hash[0] === '$') {
|
||||||
return await bcrypt.compare(password, hash)
|
return await bcrypt.compare(password, hash)
|
||||||
}
|
}
|
||||||
@ -23,7 +23,7 @@ export class PasswordService {
|
|||||||
).toString('base64');
|
).toString('base64');
|
||||||
}
|
}
|
||||||
|
|
||||||
hash (password): Promise<string> {
|
public hash(password: string): Promise<string> {
|
||||||
return bcrypt.hash(password, 4)
|
return bcrypt.hash(password, 4)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,9 +1,7 @@
|
|||||||
import { Injectable } from '@nestjs/common'
|
import { Injectable } from '@nestjs/common'
|
||||||
import { InjectRepository } from '@nestjs/typeorm'
|
import { InjectRepository } from '@nestjs/typeorm'
|
||||||
import { Repository } from 'typeorm'
|
import { Repository } from 'typeorm'
|
||||||
import { FormEntity } from '../../entity/form.entity'
|
|
||||||
import { FormFieldEntity } from '../../entity/form.field.entity'
|
import { FormFieldEntity } from '../../entity/form.field.entity'
|
||||||
import { UserEntity } from '../../entity/user.entity'
|
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class FormFieldService {
|
export class FormFieldService {
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import { ConfigService } from '@nestjs/config'
|
|||||||
import { RedisPubSub } from 'graphql-redis-subscriptions'
|
import { RedisPubSub } from 'graphql-redis-subscriptions'
|
||||||
import { PubSub, PubSubEngine } from 'graphql-subscriptions'
|
import { PubSub, PubSubEngine } from 'graphql-subscriptions'
|
||||||
import Redis from 'ioredis'
|
import Redis from 'ioredis'
|
||||||
import { PinoLogger } from 'nestjs-pino/dist'
|
import { PinoLogger } from 'nestjs-pino'
|
||||||
import { authServices } from './auth'
|
import { authServices } from './auth'
|
||||||
import { formServices } from './form'
|
import { formServices } from './form'
|
||||||
import { InstallationMetricsService } from './installation.metrics.service'
|
import { InstallationMetricsService } from './installation.metrics.service'
|
||||||
@ -42,6 +42,6 @@ export const services = [
|
|||||||
publisher: new Redis(options),
|
publisher: new Redis(options),
|
||||||
subscriber: new Redis(options),
|
subscriber: new Redis(options),
|
||||||
})
|
})
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { Injectable, OnApplicationBootstrap } from '@nestjs/common'
|
import { Injectable, OnApplicationBootstrap } from '@nestjs/common'
|
||||||
import { ConfigService } from '@nestjs/config'
|
import { ConfigService } from '@nestjs/config'
|
||||||
import MatomoTracker from 'matomo-tracker'
|
import MatomoTracker from 'matomo-tracker'
|
||||||
import { PinoLogger } from 'nestjs-pino/dist'
|
import { PinoLogger } from 'nestjs-pino'
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class InstallationMetricsService implements OnApplicationBootstrap {
|
export class InstallationMetricsService implements OnApplicationBootstrap {
|
||||||
@ -11,6 +11,7 @@ export class InstallationMetricsService implements OnApplicationBootstrap {
|
|||||||
private readonly logger: PinoLogger,
|
private readonly logger: PinoLogger,
|
||||||
private readonly configService: ConfigService,
|
private readonly configService: ConfigService,
|
||||||
) {
|
) {
|
||||||
|
logger.setContext(this.constructor.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
async onApplicationBootstrap(): Promise<void> {
|
async onApplicationBootstrap(): Promise<void> {
|
||||||
@ -29,7 +30,7 @@ export class InstallationMetricsService implements OnApplicationBootstrap {
|
|||||||
tracker.track({
|
tracker.track({
|
||||||
url: `http://localhost/version/${process.env.version}`,
|
url: `http://localhost/version/${process.env.version}`,
|
||||||
action_name: 'startup',
|
action_name: 'startup',
|
||||||
ua: process.arch
|
ua: process.arch,
|
||||||
})
|
})
|
||||||
|
|
||||||
setInterval(() => {
|
setInterval(() => {
|
||||||
@ -37,7 +38,7 @@ export class InstallationMetricsService implements OnApplicationBootstrap {
|
|||||||
tracker.track({
|
tracker.track({
|
||||||
url: `http://localhost/version/${process.env.version}`,
|
url: `http://localhost/version/${process.env.version}`,
|
||||||
action_name: 'running',
|
action_name: 'running',
|
||||||
ua: process.arch
|
ua: process.arch,
|
||||||
})
|
})
|
||||||
}, 24 * 60 * 60 * 1000)
|
}, 24 * 60 * 60 * 1000)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import fs from 'fs'
|
|||||||
import handlebars from 'handlebars'
|
import handlebars from 'handlebars'
|
||||||
import htmlToText from 'html-to-text'
|
import htmlToText from 'html-to-text'
|
||||||
import mjml2html from 'mjml'
|
import mjml2html from 'mjml'
|
||||||
import { PinoLogger } from 'nestjs-pino/dist'
|
import { PinoLogger } from 'nestjs-pino'
|
||||||
import { join } from 'path'
|
import { join } from 'path'
|
||||||
import { defaultLanguage } from '../config/languages'
|
import { defaultLanguage } from '../config/languages'
|
||||||
|
|
||||||
@ -31,7 +31,7 @@ export class MailService {
|
|||||||
fs.readFileSync(path).toString('utf-8')
|
fs.readFileSync(path).toString('utf-8')
|
||||||
)(context),
|
)(context),
|
||||||
{
|
{
|
||||||
minify: true
|
minify: true,
|
||||||
}
|
}
|
||||||
).html
|
).html
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,3 @@
|
|||||||
import { ProfileUpdateService } from './profile.update.service'
|
import { ProfileUpdateService } from './profile.update.service'
|
||||||
|
|
||||||
export const profileServices = [
|
export const profileServices = [ProfileUpdateService]
|
||||||
ProfileUpdateService,
|
|
||||||
]
|
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
import { HttpService, Injectable } from '@nestjs/common'
|
import { HttpService } from '@nestjs/axios'
|
||||||
|
import { Injectable } from '@nestjs/common'
|
||||||
import handlebars from 'handlebars'
|
import handlebars from 'handlebars'
|
||||||
import { PinoLogger } from 'nestjs-pino/dist'
|
import { PinoLogger } from 'nestjs-pino'
|
||||||
import { SubmissionEntity } from '../../entity/submission.entity'
|
import { SubmissionEntity } from '../../entity/submission.entity'
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
@ -9,6 +10,7 @@ export class SubmissionHookService {
|
|||||||
private httpService: HttpService,
|
private httpService: HttpService,
|
||||||
private readonly logger: PinoLogger,
|
private readonly logger: PinoLogger,
|
||||||
) {
|
) {
|
||||||
|
logger.setContext(this.constructor.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
public async process(submission: SubmissionEntity): Promise<void> {
|
public async process(submission: SubmissionEntity): Promise<void> {
|
||||||
@ -20,7 +22,7 @@ export class SubmissionHookService {
|
|||||||
try {
|
try {
|
||||||
const response = await this.httpService.post(
|
const response = await this.httpService.post(
|
||||||
hook.url,
|
hook.url,
|
||||||
await this.format(submission, hook.format)
|
this.format(submission, hook.format)
|
||||||
).toPromise()
|
).toPromise()
|
||||||
|
|
||||||
console.log('sent hook', response.data)
|
console.log('sent hook', response.data)
|
||||||
@ -32,7 +34,7 @@ export class SubmissionHookService {
|
|||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
private async format(submission: SubmissionEntity, format?: string): Promise<any> {
|
private format(submission: SubmissionEntity, format?: string): any {
|
||||||
const fields = {}
|
const fields = {}
|
||||||
submission.form.fields.forEach((field) => {
|
submission.form.fields.forEach((field) => {
|
||||||
fields[field.id] = field
|
fields[field.id] = field
|
||||||
@ -47,9 +49,9 @@ export class SubmissionHookService {
|
|||||||
return {
|
return {
|
||||||
field: submissionField.field.id,
|
field: submissionField.field.id,
|
||||||
slug: submissionField.field.slug || null,
|
slug: submissionField.field.slug || null,
|
||||||
value: submissionField.field.value
|
value: submissionField.field.value,
|
||||||
}
|
}
|
||||||
})
|
}),
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!format) {
|
if (!format) {
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { Injectable } from '@nestjs/common'
|
|||||||
import handlebars from 'handlebars'
|
import handlebars from 'handlebars'
|
||||||
import htmlToText from 'html-to-text'
|
import htmlToText from 'html-to-text'
|
||||||
import mjml2html from 'mjml'
|
import mjml2html from 'mjml'
|
||||||
import { PinoLogger } from 'nestjs-pino/dist'
|
import { PinoLogger } from 'nestjs-pino'
|
||||||
import { SubmissionEntity } from '../../entity/submission.entity'
|
import { SubmissionEntity } from '../../entity/submission.entity'
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
@ -12,6 +12,7 @@ export class SubmissionNotificationService {
|
|||||||
private readonly nestMailer: MailerService,
|
private readonly nestMailer: MailerService,
|
||||||
private readonly logger: PinoLogger,
|
private readonly logger: PinoLogger,
|
||||||
) {
|
) {
|
||||||
|
logger.setContext(this.constructor.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
public async process(submission: SubmissionEntity): Promise<void> {
|
public async process(submission: SubmissionEntity): Promise<void> {
|
||||||
@ -31,7 +32,7 @@ export class SubmissionNotificationService {
|
|||||||
// TODO add variables
|
// TODO add variables
|
||||||
}),
|
}),
|
||||||
{
|
{
|
||||||
minify: true
|
minify: true,
|
||||||
}
|
}
|
||||||
).html
|
).html
|
||||||
|
|
||||||
@ -40,7 +41,7 @@ export class SubmissionNotificationService {
|
|||||||
replyTo: from,
|
replyTo: from,
|
||||||
subject: notification.subject,
|
subject: notification.subject,
|
||||||
html,
|
html,
|
||||||
text: htmlToText.fromString(html)
|
text: htmlToText.fromString(html),
|
||||||
})
|
})
|
||||||
console.log('sent notification to', to)
|
console.log('sent notification to', to)
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { Injectable } from '@nestjs/common'
|
import { Injectable } from '@nestjs/common'
|
||||||
import { InjectRepository } from '@nestjs/typeorm'
|
import { InjectRepository } from '@nestjs/typeorm'
|
||||||
import dayjs from 'dayjs'
|
import dayjs from 'dayjs'
|
||||||
import { PinoLogger } from 'nestjs-pino/dist'
|
import { PinoLogger } from 'nestjs-pino'
|
||||||
import { Repository } from 'typeorm'
|
import { Repository } from 'typeorm'
|
||||||
import { SubmissionSetFieldInput } from '../../dto/submission/submission.set.field.input'
|
import { SubmissionSetFieldInput } from '../../dto/submission/submission.set.field.input'
|
||||||
import { SubmissionEntity } from '../../entity/submission.entity'
|
import { SubmissionEntity } from '../../entity/submission.entity'
|
||||||
@ -20,6 +20,7 @@ export class SubmissionSetFieldService {
|
|||||||
private readonly notifications: SubmissionNotificationService,
|
private readonly notifications: SubmissionNotificationService,
|
||||||
private readonly logger: PinoLogger,
|
private readonly logger: PinoLogger,
|
||||||
) {
|
) {
|
||||||
|
logger.setContext(this.constructor.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
async saveField(submission: SubmissionEntity, input: SubmissionSetFieldInput): Promise<void> {
|
async saveField(submission: SubmissionEntity, input: SubmissionSetFieldInput): Promise<void> {
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { Injectable, OnApplicationBootstrap } from '@nestjs/common'
|
import { Injectable, OnApplicationBootstrap } from '@nestjs/common'
|
||||||
import { ConfigService } from '@nestjs/config'
|
import { ConfigService } from '@nestjs/config'
|
||||||
import { PinoLogger } from 'nestjs-pino/dist'
|
import { PinoLogger } from 'nestjs-pino'
|
||||||
import { UserCreateService } from './user.create.service'
|
import { UserCreateService } from './user.create.service'
|
||||||
import { UserService } from './user.service'
|
import { UserService } from './user.service'
|
||||||
|
|
||||||
@ -12,12 +12,15 @@ export class BootService implements OnApplicationBootstrap {
|
|||||||
private readonly configService: ConfigService,
|
private readonly configService: ConfigService,
|
||||||
private readonly logger: PinoLogger,
|
private readonly logger: PinoLogger,
|
||||||
) {
|
) {
|
||||||
|
logger.setContext(this.constructor.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
async onApplicationBootstrap(): Promise<void> {
|
async onApplicationBootstrap(): Promise<void> {
|
||||||
const create = this.configService.get<string>('CREATE_ADMIN', 'false')
|
const create = this.configService.get<string>('CREATE_ADMIN', 'false')
|
||||||
|
|
||||||
if (!create || ['false', '0', 'no', ''].includes(create.toLowerCase())) {
|
if (!create || [
|
||||||
|
'false', '0', 'no', '',
|
||||||
|
].includes(create.toLowerCase())) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,7 +49,9 @@ export class BootService implements OnApplicationBootstrap {
|
|||||||
username,
|
username,
|
||||||
email,
|
email,
|
||||||
password,
|
password,
|
||||||
}, ['user', 'admin', 'superuser'])
|
}, [
|
||||||
|
'user', 'admin', 'superuser',
|
||||||
|
])
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.logger.error({
|
this.logger.error({
|
||||||
error: e,
|
error: e,
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { Injectable } from '@nestjs/common'
|
import { Injectable } from '@nestjs/common'
|
||||||
import { InjectRepository } from '@nestjs/typeorm'
|
import { InjectRepository } from '@nestjs/typeorm'
|
||||||
import { PinoLogger } from 'nestjs-pino/dist'
|
import { PinoLogger } from 'nestjs-pino'
|
||||||
import { Repository } from 'typeorm'
|
import { Repository } from 'typeorm'
|
||||||
import { rolesType } from '../../config/roles'
|
import { rolesType } from '../../config/roles'
|
||||||
import { UserCreateInput } from '../../dto/user/user.create.input'
|
import { UserCreateInput } from '../../dto/user/user.create.input'
|
||||||
@ -18,14 +18,20 @@ export class UserCreateService {
|
|||||||
private readonly logger: PinoLogger,
|
private readonly logger: PinoLogger,
|
||||||
private readonly passwordService: PasswordService,
|
private readonly passwordService: PasswordService,
|
||||||
private readonly settingService: SettingService,
|
private readonly settingService: SettingService,
|
||||||
) {}
|
) {
|
||||||
|
logger.setContext(this.constructor.name)
|
||||||
|
}
|
||||||
|
|
||||||
private async getDefaultRoles(): Promise<rolesType> {
|
private async getDefaultRoles(): Promise<rolesType> {
|
||||||
const roleSetting = await this.settingService.getByKey('DEFAULT_ROLE')
|
const roleSetting = await this.settingService.getByKey('DEFAULT_ROLE')
|
||||||
|
|
||||||
switch (roleSetting.value) {
|
switch (roleSetting.value) {
|
||||||
case 'superuser':
|
case 'superuser':
|
||||||
return ['superuser', 'admin', 'user']
|
return [
|
||||||
|
'superuser',
|
||||||
|
'admin',
|
||||||
|
'user',
|
||||||
|
]
|
||||||
|
|
||||||
case 'admin':
|
case 'admin':
|
||||||
return ['admin', 'user']
|
return ['admin', 'user']
|
||||||
|
|||||||
@ -11,7 +11,7 @@ export class UserService {
|
|||||||
) {
|
) {
|
||||||
}
|
}
|
||||||
|
|
||||||
async isSuperuser(user: UserEntity): Promise<boolean> {
|
isSuperuser(user: UserEntity): boolean {
|
||||||
return user.roles.includes('superuser')
|
return user.roles.includes('superuser')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
import { Injectable } from '@nestjs/common'
|
import { Injectable } from '@nestjs/common'
|
||||||
import { InjectRepository } from '@nestjs/typeorm'
|
import { InjectRepository } from '@nestjs/typeorm'
|
||||||
import { Repository } from 'typeorm'
|
import { Repository } from 'typeorm'
|
||||||
|
import { rolesType } from '../../config/roles'
|
||||||
import { UserUpdateInput } from '../../dto/user/user.update.input'
|
import { UserUpdateInput } from '../../dto/user/user.update.input'
|
||||||
import { UserEntity } from '../../entity/user.entity'
|
import { UserEntity } from '../../entity/user.entity'
|
||||||
import { PasswordService } from '../auth/password.service'
|
import { PasswordService } from '../auth/password.service'
|
||||||
@ -32,7 +33,7 @@ export class UserUpdateService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (input.roles !== undefined) {
|
if (input.roles !== undefined) {
|
||||||
user.roles = input.roles as any
|
user.roles = input.roles as rolesType
|
||||||
}
|
}
|
||||||
|
|
||||||
if (input.language !== undefined) {
|
if (input.language !== undefined) {
|
||||||
|
|||||||
@ -7,6 +7,7 @@
|
|||||||
"esModuleInterop": true,
|
"esModuleInterop": true,
|
||||||
"experimentalDecorators": true,
|
"experimentalDecorators": true,
|
||||||
"target": "es2017",
|
"target": "es2017",
|
||||||
|
"skipLibCheck": true,
|
||||||
"sourceMap": true,
|
"sourceMap": true,
|
||||||
"outDir": "./dist",
|
"outDir": "./dist",
|
||||||
"baseUrl": "./",
|
"baseUrl": "./",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user