chore: Update environment variables for database connection and add MySQL2 dependency; implement partner API route and database query functionality
This commit is contained in:
parent
e2e5a484ca
commit
2d1184e1c0
@ -10,8 +10,8 @@ NEXT_PUBLIC_QSP_API_URL=http://1.248.227.176:8120
|
||||
NEXT_PUBLIC_INQUIRY_API_URL=http://1.248.227.176:38080
|
||||
|
||||
#QPARTNER 로그인 api
|
||||
DB_HOST=asdf
|
||||
DB_USER=asdf
|
||||
DB_PASSWORD=asdf
|
||||
DB_DATABASE=asdf
|
||||
DB_HOST=202.218.61.226
|
||||
DB_USER=readonly
|
||||
DB_PASSWORD=aAjmFW12iHKW84l1
|
||||
DB_DATABASE=qpartners
|
||||
DB_PORT=3306
|
||||
@ -8,8 +8,8 @@ NEXT_PUBLIC_QSP_API_URL=http://1.248.227.176:8120
|
||||
NEXT_PUBLIC_INQUIRY_API_URL=http://1.248.227.176:38080
|
||||
|
||||
#QPARTNER 로그인 api
|
||||
DB_HOST=asdf
|
||||
DB_USER=asdf
|
||||
DB_PASSWORD=asdf
|
||||
DB_DATABASE=asdf
|
||||
DB_HOST=202.218.61.226
|
||||
DB_USER=readonly
|
||||
DB_PASSWORD=aAjmFW12iHKW84l1
|
||||
DB_DATABASE=qpartners
|
||||
DB_PORT=3306
|
||||
@ -16,6 +16,7 @@
|
||||
"iron-session": "^8.0.4",
|
||||
"lucide": "^0.503.0",
|
||||
"mssql": "^11.0.1",
|
||||
"mysql2": "^3.14.1",
|
||||
"next": "15.2.4",
|
||||
"react": "^19.0.0",
|
||||
"react-dom": "^19.0.0",
|
||||
@ -27,6 +28,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tailwindcss/postcss": "^4",
|
||||
"@types/mysql": "^2.15.27",
|
||||
"@types/node": "^20",
|
||||
"@types/react": "^19",
|
||||
"@types/react-dom": "^19",
|
||||
|
||||
89
pnpm-lock.yaml
generated
89
pnpm-lock.yaml
generated
@ -29,6 +29,9 @@ importers:
|
||||
mssql:
|
||||
specifier: ^11.0.1
|
||||
version: 11.0.1
|
||||
mysql2:
|
||||
specifier: ^3.14.1
|
||||
version: 3.14.1
|
||||
next:
|
||||
specifier: 15.2.4
|
||||
version: 15.2.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0)
|
||||
@ -57,6 +60,9 @@ importers:
|
||||
'@tailwindcss/postcss':
|
||||
specifier: ^4
|
||||
version: 4.0.17
|
||||
'@types/mysql':
|
||||
specifier: ^2.15.27
|
||||
version: 2.15.27
|
||||
'@types/node':
|
||||
specifier: ^20
|
||||
version: 20.17.28
|
||||
@ -676,6 +682,9 @@ packages:
|
||||
'@tediousjs/connection-string@0.5.0':
|
||||
resolution: {integrity: sha512-7qSgZbincDDDFyRweCIEvZULFAw5iz/DeunhvuxpL31nfntX3P4Yd4HkHBRg9H8CdqY1e5WFN1PZIz/REL9MVQ==}
|
||||
|
||||
'@types/mysql@2.15.27':
|
||||
resolution: {integrity: sha512-YfWiV16IY0OeBfBCk8+hXKmdTKrKlwKN1MNKAPBu5JYxLwBEZl7QzeEpGnlZb3VMGJrrGmB84gXiH+ofs/TezA==}
|
||||
|
||||
'@types/node@20.17.28':
|
||||
resolution: {integrity: sha512-DHlH/fNL6Mho38jTy7/JT7sn2wnXI+wULR6PV4gy4VHLVvnrV/d3pHAMQHhc4gjdLmK2ZiPoMxzp6B3yRajLSQ==}
|
||||
|
||||
@ -712,6 +721,10 @@ packages:
|
||||
engines: {node: '>= 4.5.0'}
|
||||
hasBin: true
|
||||
|
||||
aws-ssl-profiles@1.1.2:
|
||||
resolution: {integrity: sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==}
|
||||
engines: {node: '>= 6.0.0'}
|
||||
|
||||
axios@1.8.4:
|
||||
resolution: {integrity: sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==}
|
||||
|
||||
@ -826,6 +839,10 @@ packages:
|
||||
resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
|
||||
engines: {node: '>=0.4.0'}
|
||||
|
||||
denque@2.1.0:
|
||||
resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==}
|
||||
engines: {node: '>=0.10'}
|
||||
|
||||
detect-libc@1.0.3:
|
||||
resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==}
|
||||
engines: {node: '>=0.10'}
|
||||
@ -911,6 +928,9 @@ packages:
|
||||
function-bind@1.1.2:
|
||||
resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
|
||||
|
||||
generate-function@2.3.1:
|
||||
resolution: {integrity: sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==}
|
||||
|
||||
get-intrinsic@1.3.0:
|
||||
resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
|
||||
engines: {node: '>= 0.4'}
|
||||
@ -994,6 +1014,9 @@ packages:
|
||||
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
|
||||
engines: {node: '>=0.12.0'}
|
||||
|
||||
is-property@1.0.2:
|
||||
resolution: {integrity: sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==}
|
||||
|
||||
is-wsl@3.1.0:
|
||||
resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==}
|
||||
engines: {node: '>=16'}
|
||||
@ -1112,6 +1135,17 @@ packages:
|
||||
lodash.once@4.1.1:
|
||||
resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==}
|
||||
|
||||
long@5.3.2:
|
||||
resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==}
|
||||
|
||||
lru-cache@7.18.3:
|
||||
resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
lru.min@1.1.2:
|
||||
resolution: {integrity: sha512-Nv9KddBcQSlQopmBHXSsZVY5xsdlZkdH/Iey0BlcBYggMd4two7cZnKOK9vmy3nY0O5RGH99z1PCeTpPqszUYg==}
|
||||
engines: {bun: '>=1.0.0', deno: '>=1.30.0', node: '>=8.0.0'}
|
||||
|
||||
lucide@0.503.0:
|
||||
resolution: {integrity: sha512-ZAVlxBU4dbSUAVidb2eT0fH3bTtKCj7M2aZNAVsFOrcnazvYJFu6I8OxFE+Fmx5XNf22Cw4Ln3NBHfBxNfoFOw==}
|
||||
|
||||
@ -1139,6 +1173,14 @@ packages:
|
||||
engines: {node: '>=18'}
|
||||
hasBin: true
|
||||
|
||||
mysql2@3.14.1:
|
||||
resolution: {integrity: sha512-7ytuPQJjQB8TNAYX/H2yhL+iQOnIBjAMam361R7UAL0lOVXWjtdrmoL9HYKqKoLp/8UUTRcvo1QPvK9KL7wA8w==}
|
||||
engines: {node: '>= 8.0'}
|
||||
|
||||
named-placeholders@1.1.3:
|
||||
resolution: {integrity: sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
|
||||
nanoid@3.3.11:
|
||||
resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
|
||||
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
|
||||
@ -1275,6 +1317,9 @@ packages:
|
||||
engines: {node: '>=10'}
|
||||
hasBin: true
|
||||
|
||||
seq-queue@0.0.5:
|
||||
resolution: {integrity: sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==}
|
||||
|
||||
sharp@0.33.5:
|
||||
resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==}
|
||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||
@ -1289,6 +1334,10 @@ packages:
|
||||
sprintf-js@1.1.3:
|
||||
resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==}
|
||||
|
||||
sqlstring@2.3.3:
|
||||
resolution: {integrity: sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==}
|
||||
engines: {node: '>= 0.6'}
|
||||
|
||||
stackblur-canvas@2.7.0:
|
||||
resolution: {integrity: sha512-yf7OENo23AGJhBriGx0QivY5JP6Y1HbrrDI6WLt6C5auYZXlQrheoY8hD4ibekFKz1HOfE48Ww8kMWMnJD/zcQ==}
|
||||
engines: {node: '>=0.1.14'}
|
||||
@ -1890,6 +1939,10 @@ snapshots:
|
||||
|
||||
'@tediousjs/connection-string@0.5.0': {}
|
||||
|
||||
'@types/mysql@2.15.27':
|
||||
dependencies:
|
||||
'@types/node': 20.17.28
|
||||
|
||||
'@types/node@20.17.28':
|
||||
dependencies:
|
||||
undici-types: 6.19.8
|
||||
@ -1923,6 +1976,8 @@ snapshots:
|
||||
|
||||
atob@2.1.2: {}
|
||||
|
||||
aws-ssl-profiles@1.1.2: {}
|
||||
|
||||
axios@1.8.4:
|
||||
dependencies:
|
||||
follow-redirects: 1.15.9
|
||||
@ -2041,6 +2096,8 @@ snapshots:
|
||||
|
||||
delayed-stream@1.0.0: {}
|
||||
|
||||
denque@2.1.0: {}
|
||||
|
||||
detect-libc@1.0.3:
|
||||
optional: true
|
||||
|
||||
@ -2141,6 +2198,10 @@ snapshots:
|
||||
|
||||
function-bind@1.1.2: {}
|
||||
|
||||
generate-function@2.3.1:
|
||||
dependencies:
|
||||
is-property: 1.0.2
|
||||
|
||||
get-intrinsic@1.3.0:
|
||||
dependencies:
|
||||
call-bind-apply-helpers: 1.0.2
|
||||
@ -2230,6 +2291,8 @@ snapshots:
|
||||
is-number@7.0.0:
|
||||
optional: true
|
||||
|
||||
is-property@1.0.2: {}
|
||||
|
||||
is-wsl@3.1.0:
|
||||
dependencies:
|
||||
is-inside-container: 1.0.0
|
||||
@ -2346,6 +2409,12 @@ snapshots:
|
||||
|
||||
lodash.once@4.1.1: {}
|
||||
|
||||
long@5.3.2: {}
|
||||
|
||||
lru-cache@7.18.3: {}
|
||||
|
||||
lru.min@1.1.2: {}
|
||||
|
||||
lucide@0.503.0: {}
|
||||
|
||||
math-intrinsics@1.1.0: {}
|
||||
@ -2375,6 +2444,22 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
mysql2@3.14.1:
|
||||
dependencies:
|
||||
aws-ssl-profiles: 1.1.2
|
||||
denque: 2.1.0
|
||||
generate-function: 2.3.1
|
||||
iconv-lite: 0.6.3
|
||||
long: 5.3.2
|
||||
lru.min: 1.1.2
|
||||
named-placeholders: 1.1.3
|
||||
seq-queue: 0.0.5
|
||||
sqlstring: 2.3.3
|
||||
|
||||
named-placeholders@1.1.3:
|
||||
dependencies:
|
||||
lru-cache: 7.18.3
|
||||
|
||||
nanoid@3.3.11: {}
|
||||
|
||||
native-duplexpair@1.0.0: {}
|
||||
@ -2508,6 +2593,8 @@ snapshots:
|
||||
|
||||
semver@7.7.1: {}
|
||||
|
||||
seq-queue@0.0.5: {}
|
||||
|
||||
sharp@0.33.5:
|
||||
dependencies:
|
||||
color: 4.2.3
|
||||
@ -2544,6 +2631,8 @@ snapshots:
|
||||
|
||||
sprintf-js@1.1.3: {}
|
||||
|
||||
sqlstring@2.3.3: {}
|
||||
|
||||
stackblur-canvas@2.7.0:
|
||||
optional: true
|
||||
|
||||
|
||||
48
src/app/api/partner/route.ts
Normal file
48
src/app/api/partner/route.ts
Normal file
@ -0,0 +1,48 @@
|
||||
import { NextResponse } from 'next/server'
|
||||
import executeQuery from '@/libs/partner'
|
||||
|
||||
export async function GET(request: Request) {
|
||||
const sql = `SELECT
|
||||
r.data_id,
|
||||
u.id AS user_id,
|
||||
u.login_id AS user_login_id,
|
||||
u.password AS user_password,
|
||||
u.user_name AS user_name,
|
||||
u.user_name_kana AS user_name_kana,
|
||||
u.sei AS user_sei,
|
||||
u.mei AS user_mei,
|
||||
u.sei_kana AS user_sei_kana,
|
||||
u.mei_kana AS user_mei_kana,
|
||||
u.user_tel AS user_tel,
|
||||
u.user_fax AS user_fax,
|
||||
u.status AS user_status,
|
||||
u.seko_id AS user_seko_id,
|
||||
u.seko_limit AS user_seko_limit,
|
||||
s.id AS supplier_id,
|
||||
s.code AS supplier_code,
|
||||
s.name AS supplier_name,
|
||||
s.name_kana AS supplier_name_kana,
|
||||
s.kind AS supplier_kind
|
||||
FROM
|
||||
R_DATA r
|
||||
JOIN
|
||||
M_USER u ON r.data_id = u.id
|
||||
JOIN
|
||||
M_SUPPLIER s ON r.relation_id = s.id
|
||||
WHERE
|
||||
u.status = '1'
|
||||
AND
|
||||
u.seko_id is not null
|
||||
AND
|
||||
u.seko_limit > now()
|
||||
AND
|
||||
s.kind = '4'
|
||||
AND
|
||||
u.login_id = ?
|
||||
AND
|
||||
u.password = ?
|
||||
`
|
||||
const data = await executeQuery(sql, [])
|
||||
console.log('🚀 ~ GET ~ data:', data)
|
||||
return NextResponse.json(data)
|
||||
}
|
||||
@ -1,9 +1,20 @@
|
||||
'use client'
|
||||
|
||||
import { useRouter } from 'next/navigation'
|
||||
import { useEffect } from 'react'
|
||||
export default function Main() {
|
||||
const router = useRouter()
|
||||
|
||||
useEffect(() => {
|
||||
const fetchData = async () => {
|
||||
const res = await fetch('/api/partner')
|
||||
console.log('🚀 ~ fetchData ~ res:', res)
|
||||
const data = await res.json()
|
||||
console.log('🚀 ~ fetchData ~ data:', data)
|
||||
}
|
||||
fetchData()
|
||||
}, [])
|
||||
|
||||
return (
|
||||
<>
|
||||
<div className="main-contens">
|
||||
|
||||
38
src/libs/partner.tsx
Normal file
38
src/libs/partner.tsx
Normal file
@ -0,0 +1,38 @@
|
||||
import { createPool } from 'mysql2'
|
||||
|
||||
const pool = createPool({
|
||||
host: process.env.DB_HOST as string,
|
||||
user: process.env.DB_USER as string,
|
||||
password: process.env.DB_PASSWORD as string,
|
||||
database: process.env.DB_DATABASE as string,
|
||||
port: Number(process.env.DB_PORT),
|
||||
waitForConnections: true,
|
||||
connectionLimit: 10,
|
||||
queueLimit: 0,
|
||||
})
|
||||
|
||||
pool.getConnection((err, conn) => {
|
||||
if (err) console.log('Error connecting to db...')
|
||||
else console.log('Connected to db...!')
|
||||
conn.release()
|
||||
})
|
||||
|
||||
const executeQuery = (query: string, arrParams: any[]) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
try {
|
||||
pool.query(query, arrParams, (err, data) => {
|
||||
if (err) {
|
||||
console.log('🚀 ~ pool.query ~ err:', err)
|
||||
reject(err)
|
||||
}
|
||||
console.log('🚀 ~ pool.query ~ data:', data)
|
||||
resolve(data)
|
||||
})
|
||||
} catch (err) {
|
||||
console.log('🚀 ~ returnnewPromise ~ err:', err)
|
||||
reject(err)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
export default executeQuery
|
||||
@ -7,6 +7,7 @@ import { useHeaderStore } from '@/store/header'
|
||||
import { usePopupController } from '@/store/popupController'
|
||||
import { useSideNavState } from '@/store/sideNavState'
|
||||
import { useSessionStore } from '@/store/session'
|
||||
import { tracking } from '@/libs/tracking'
|
||||
|
||||
declare global {
|
||||
interface Window {
|
||||
@ -27,6 +28,17 @@ export default function EdgeProvider({ children, sessionData }: EdgeProviderProp
|
||||
const { setAlertMsg, setAlertBtn, setAlert, setAlert2, setAlert2BtnYes, setAlert2BtnNo } = usePopupController()
|
||||
const { session, setSession } = useSessionStore()
|
||||
|
||||
/**
|
||||
* 사용자 이벤트 트래킹 처리
|
||||
*
|
||||
*/
|
||||
const handlePageEvent = (path: string) => {
|
||||
tracking({
|
||||
url: path,
|
||||
data: '',
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* alert 함수 - window.alert 함수 대체
|
||||
* @param msg
|
||||
@ -88,6 +100,8 @@ export default function EdgeProvider({ children, sessionData }: EdgeProviderProp
|
||||
}
|
||||
//사이드바 초기화
|
||||
reset()
|
||||
// 페이지 이벤트 트래킹
|
||||
// handlePageEvent(pathname)
|
||||
}, [pathname])
|
||||
|
||||
return <>{children}</>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user