add mssqldb connect
This commit is contained in:
@@ -7,3 +7,4 @@ DB_NAME='vanillameta'
|
||||
|
||||
CORS_ORIGIN='*'
|
||||
|
||||
api propertyfile fix
|
||||
24
backend-api/Dockerfile
Normal file
24
backend-api/Dockerfile
Normal 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"]
|
||||
7
backend-api/db/conf.d/my.cnf
Normal file
7
backend-api/db/conf.d/my.cnf
Normal file
@@ -0,0 +1,7 @@
|
||||
|
||||
|
||||
[client]
|
||||
default-character-set = utf8mb4
|
||||
|
||||
[mysql]
|
||||
default-character-set = utf8mb4
|
||||
131
backend-api/docker-compose.yml
Normal file
131
backend-api/docker-compose.yml
Normal 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:
|
||||
|
||||
BIN
backend-api/instantclient-basic-macos.x64-19.8.0.0.0dbru.dmg
Normal file
BIN
backend-api/instantclient-basic-macos.x64-19.8.0.0.0dbru.dmg
Normal file
Binary file not shown.
@@ -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",
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
REACT_APP_API_URL='http://localhost:4000'
|
||||
REACT_APP_API_URL='http://localhost_dev:4000'
|
||||
0
identifier.sqlite
Normal file
0
identifier.sqlite
Normal file
Reference in New Issue
Block a user