add mssqldb connect

This commit is contained in:
손승우
2022-10-25 20:20:24 +09:00
parent 64fae06a02
commit eaffbd686a
11 changed files with 217 additions and 9 deletions

View File

@@ -7,3 +7,4 @@ DB_NAME='vanillameta'
CORS_ORIGIN='*'
api propertyfile fix

24
backend-api/Dockerfile Normal file
View File

@@ -0,0 +1,24 @@
FROM ubuntu:18.04
RUN apt-get -qq update
RUN apt-get -qq upgrade --yes
RUN apt-get -qq install curl --yes
RUN curl -sL https://deb.nodesource.com/setup_14.x | bash -
RUN apt-get -qq install nodejs --yes
RUN apt-get install chromium-browser --yes
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
COPY tsconfig.json .
COPY tsconfig.build.json .
RUN npm run build
EXPOSE 3000
CMD ["npm", "run", "start"]

View File

@@ -0,0 +1,7 @@
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4

View File

@@ -0,0 +1,131 @@
version: "3.7"
services:
main:
build:
context: ./
dockerfile: ./Dockerfile
ports:
- "4000:4000"
networks:
- vanillameta
depends_on:
- mysql
# - pg
links:
- "mysql:mysqldb"
# - "pg"
env_file:
- .env
- .env.dev
restart: always
mysql:
container_name: vanillameta_mysql
image: mysql
ports:
- "3306:3306"
networks:
- vanillameta
environment:
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
MYSQL_CHARSET: utf8mb4
MYSQL_DATABASE: ${DB_NAME}
MYSQL_USER: ${DB_USERNAME}
MYSQL_PASSWORD: ${DB_PASSWORD}
TZ: Asia/Seoul
restart: always
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
--default_authentication_plugin=mysql_native_password
volumes:
- mysql:/var/lib/mysql
- ./db/conf.d:/etc/mysql/conf.d
# mariadb:
# container_name: vanillameta_mariadb
# extra_hosts:
# - "host.docker.internal:host-gateway"
# image: mariadb
# ports:
# - "3308:3308"
# networks:
# - vanillameta
# environment:
# MYSQL_ROOT_PASSWORD: 'strongpassword'
# MYSQL_CHARSET: utf8mb4
# MYSQL_DATABASE: ${DB_NAME}
# MYSQL_USER: ${DB_USERNAME}
# MYSQL_PASSWORD: ${DB_PASSWORD}
# TZ: Asia/Seoul
# restart: always
# volumes:
# - ./db:/var/lib/maria
# pg:
# container_name: vanillameta_pg
# image: postgres
# ports:
# - "5432:5432"
# networks:
# - vanillameta
# environment:
# POSTGRES_ROOT_PASSWORD: 'strongpassword'
# POSTGRES_CHARSET: utf8mb4
# POSTGRES_DATABASE: ${DB_NAME}
# POSTGRES_USER: ${DB_USERNAME}
# POSTGRES_PASSWORD: ${DB_PASSWORD}
# POSTGRES_HOST_AUTH_METHOD: "trust"
# TZ: Asia/Seoul
# restart: always
# # command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
# volumes:
# - mysql:/var/lib/mysql
# - ./db/conf.d:/etc/porstgressql/data
# oracledb:
# container_name: vanillameta_oracle
# image: oracleinanutshell/oracle-xe-11g
# ports:
# - "1521:1521"
# networks:
# - vanillameta
# environment:
# ORACLE_CHARSET: utf8mb4
# ORACLE_DATABASE: ${DB_NAME}
# ORACLE_USER: ${DB_USERNAME}
# ORACLE_PASSWORD: ${DB_PASSWORD}
# TZ: Asia/Seoul
# restart: always
# # command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
# volumes:
# - mysql:/var/lib/mysql
# - ./db/conf.d:/etc/porstgressql/data
#
# mssql:
# container_name: vanillameta_mssql
# image: mcr.microsoft.com/azure-sql-edge
# ports:
# - "1433:1433"
# networks:
# - vanillameta
# environment:
# ACCEPT_EULA: "Y"
# MSSQL_SA_PASSWORD: ${DB_PASSWORD}
# MSSQL_AGENT_ENABLED: "true"
# restart: always
# command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
#
# volumes:
# - ./vanillameta_mssqldata:/var/opt/mssql
#
# - ./db/conf.d:/etc/mysql/conf.d
volumes:
mysql:
networks:
vanillameta:

View File

@@ -44,6 +44,7 @@
"class-validator": "^0.13.2",
"cookie-parser": "^1.4.5",
"cross-env": "^7.0.3",
"dylib-node": "^1.0.10",
"js-joda": "^1.11.0",
"knex": "^2.3.0",
"knex-bigquery": "^2.0.3",

View File

@@ -25,13 +25,12 @@ import { ConnectionModule } from './connection/connection.module';
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
// type: 'sqlite',
// database: 'vanillameta',
autoLoadEntities: true,
entities: [__dirname + '/**/*.entity{.ts,.js}'],
synchronize: false,
logging: process.env.NODE_ENV == 'dev',
retryAttempts: 1,
retryAttempts: 1
}),
DatabaseModule,
DatasetModule,

View File

@@ -7,6 +7,7 @@ import { Database } from '../database/entities/database.entity';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { ResponseStatus } from '../common/enum/response-status.enum';
import { oracledb } from 'oracledb'
const knexConnections = new Map<number, Knex>();
@@ -66,10 +67,10 @@ export class ConnectionService {
useNullAsDefault: true,
};
createDatabaseDto.connectionConfig = JSON.stringify(connectionConfig);
let _knex: Knex;
let returnObj = {};
try {
console.log(connectionConfig)
_knex = knex(connectionConfig as Knex.Config);
} catch (e) {
console.log('knex not connected');
@@ -101,14 +102,56 @@ export class ConnectionService {
const fields = [];
const resultObj = { status: ResponseStatus.SUCCESS, message: 'success', datas: [], fields: [] };
try {
const queryRes = await knex.raw(queryExecuteDto.query);
switch (knex.client.config.client) {
case 'mysql':
if (queryRes && queryRes.length > 0) {
case 'mysql2':
if (queryRes && queryRes[0].length > 0) {
datas = queryRes[0];
const tempFields = queryRes[1];
tempFields.map(field => {
const fieldInfo = {
columnName: field.name,
columnLength: field._tableLength,
columnType: FieldTypeUtil.mysqlFieldType(field.columnType),
};
fields.push(fieldInfo);
});
break;
}
case 'pg':
if (queryRes && queryRes.rows.length > 0) {
datas = queryRes.rows;
const tempFields = queryRes.fields;
tempFields.map(field => {
const fieldInfo = {
columnName: field.name,
columnLength: field.length,
columnType: FieldTypeUtil.mysqlFieldType(field.type),
};
fields.push(fieldInfo);
});
break;
}
case 'mssql':
if (queryRes && queryRes.length > 0) {
datas = queryRes;
for(let i = 0; i < Object.keys(queryRes[0]).length; i ++){
console.log(Object.keys[i])
}
const tempFields = queryRes;
tempFields.map(field => {
const fieldInfo = {
columnName: field.name,
@@ -118,6 +161,7 @@ export class ConnectionService {
fields.push(fieldInfo);
});
}
break;
}
resultObj.datas = datas;
@@ -129,6 +173,7 @@ export class ConnectionService {
console.log(e.sqlMessage);
}
return resultObj;
}
}

View File

@@ -1 +1 @@
REACT_APP_API_URL='http://localhost:4000'
REACT_APP_API_URL='http://localhost_dev:4000'

0
identifier.sqlite Normal file
View File