Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
students
eue
Commits
e1b009d1
Commit
e1b009d1
authored
Jun 30, 2021
by
KangMin An
Browse files
Update : 통합 데이터 경로 생성, 데이터 헤더 추가.
parent
09749db2
Changes
1
Show whitespace changes
Inline
Side-by-side
server/src/controllers/dataController.js
View file @
e1b009d1
...
@@ -12,6 +12,9 @@ const IN = "In";
...
@@ -12,6 +12,9 @@ const IN = "In";
const
OUTSIDE
=
"
Outside
"
;
const
OUTSIDE
=
"
Outside
"
;
const
USERS
=
"
Users
"
;
const
USERS
=
"
Users
"
;
const
OUT_DATA_HEADER
=
"
date,temp,humi,press,wind_speed
\n
"
;
const
IN_DATA_HEADER
=
"
date,temp,humi,lights
\n
"
;
// 데이터 수집 기로 부터 받아온 지역 코드 세분화
// 데이터 수집 기로 부터 받아온 지역 코드 세분화
const
locCodeSep
=
(
code
=
""
)
=>
{
const
locCodeSep
=
(
code
=
""
)
=>
{
const
DO
=
code
.
slice
(
0
,
2
);
const
DO
=
code
.
slice
(
0
,
2
);
...
@@ -39,10 +42,10 @@ const getTimeInfo = () => {
...
@@ -39,10 +42,10 @@ const getTimeInfo = () => {
const
time
=
{
const
time
=
{
year
:
year
,
year
:
year
,
month
:
month
,
month
:
month
<
10
?
`0
${
month
}
`
:
month
,
date
:
date
,
date
:
date
<
10
?
`0
${
date
}
`
:
date
,
hour
:
hour
,
hour
:
hour
<
10
?
`0
${
hour
}
`
:
hour
,
minute
:
minute
,
minute
:
minute
<
10
?
`0
${
minute
}
`
:
minute
,
};
};
return
time
;
return
time
;
...
@@ -51,8 +54,8 @@ const getTimeInfo = () => {
...
@@ -51,8 +54,8 @@ const getTimeInfo = () => {
// Data 접근 경로 반환, DB에 존재 하지 않을 시 Update 동작
// Data 접근 경로 반환, DB에 존재 하지 않을 시 Update 동작
const
getDataDIR
=
async
(
loc
,
time
,
type
,
id
)
=>
{
const
getDataDIR
=
async
(
loc
,
time
,
type
,
id
)
=>
{
const
year
=
time
.
year
;
const
year
=
time
.
year
;
const
month
=
time
.
month
<
10
?
`0
${
time
.
month
}
`
:
time
.
month
;
const
month
=
time
.
month
;
const
date
=
time
.
date
<
10
?
`0
${
time
.
date
}
`
:
time
.
date
;
const
date
=
time
.
date
;
const
select_query
=
const
select_query
=
"
SELECT DATALINK
"
+
"
SELECT DATALINK
"
+
...
@@ -88,33 +91,53 @@ const getDataDIR = async (loc, time, type, id) => {
...
@@ -88,33 +91,53 @@ const getDataDIR = async (loc, time, type, id) => {
const
timeDIR
=
`/
${
year
}
`
+
`/
${
year
}${
month
}
`
+
`/
${
year
}${
month
}${
date
}
`
;
const
timeDIR
=
`/
${
year
}
`
+
`/
${
year
}${
month
}
`
+
`/
${
year
}${
month
}${
date
}
`
;
// 최종 Data 저장소 경로
// 지역별 통합 데이터와 지역+날짜별 Data 저장소 경로
const
repoDIR
=
process
.
env
.
LOCAL_SERVER_DIR
+
baseDIR
+
timeDIR
;
const
dirs
=
{
base
:
process
.
env
.
LOCAL_SERVER_DIR
+
baseDIR
,
time
:
timeDIR
,
};
return
repoDIR
;
return
dirs
;
};
};
// 데이터를 파일 형식으로 저장
// 데이터를 파일 형식으로 저장
const
storeData
=
(
type
,
time
,
loc
,
f
dir
,
data
)
=>
{
const
storeData
=
(
type
,
time
,
loc
,
dir
,
data
)
=>
{
const
fileName
=
"
weather.csv
"
;
const
fileName
=
"
weather.csv
"
;
fs
.
open
(
f
dir
+
`/
${
fileName
}
`
,
"
a
"
,
(
err
,
fd
)
=>
{
fs
.
open
(
dir
+
`/
${
fileName
}
`
,
"
a
"
,
(
err
,
fd
)
=>
{
if
(
err
)
{
if
(
err
)
{
// Directory가 존재하지 않는 경우, 생성
// Directory가 존재하지 않는 경우, 생성
if
(
err
.
code
===
"
ENOENT
"
)
{
if
(
err
.
code
===
"
ENOENT
"
)
{
console
.
log
(
"
There is no directory.
"
);
console
.
log
(
"
There is no directory.
"
);
fs
.
mkdirSync
(
fdir
,
{
recursive
:
true
},
(
err
)
=>
{
fs
.
mkdirSync
(
dir
,
{
recursive
:
true
},
(
err
)
=>
{
if
(
err
)
console
.
log
(
err
);
});
// 디렉토리를 새로 생성하는 경우 header 추가.
const
header
=
type
==
OUT
?
OUT_DATA_HEADER
:
IN_DATA_HEADER
;
fs
.
appendFile
(
dir
+
`/
${
fileName
}
`
,
header
,
(
err
)
=>
{
if
(
err
)
console
.
log
(
err
);
if
(
err
)
console
.
log
(
err
);
else
console
.
log
(
"
Create directory and record header.
"
);
});
});
console
.
log
(
"
Create directory.
"
);
// 헤더 추가 후 데이터 추가
fs
.
appendFile
(
dir
+
`/
${
fileName
}
`
,
data
,
(
err
)
=>
{
if
(
err
)
console
.
log
(
err
);
else
console
.
log
(
`
${
time
.
year
}
/
${
time
.
month
}
/
${
time
.
date
}
${
time
.
hour
}
:
${
time
.
minute
}
-
${
loc
.
EMD
}
${
type
===
OUT
?
OUTSIDE
:
USERS
}
data append.`
);
});
}
}
// 그 외의 에러는 출력
// 그 외의 에러는 출력
else
console
.
log
(
err
);
else
console
.
log
(
err
);
}
}
// 디렉토리가 존재하는 경우 실행
fs
.
appendFile
(
fdir
+
`/
${
fileName
}
`
,
data
,
(
err
)
=>
{
else
{
fs
.
appendFile
(
dir
+
`/
${
fileName
}
`
,
data
,
(
err
)
=>
{
if
(
err
)
console
.
log
(
err
);
if
(
err
)
console
.
log
(
err
);
else
else
console
.
log
(
console
.
log
(
...
@@ -123,6 +146,7 @@ const storeData = (type, time, loc, fdir, data) => {
...
@@ -123,6 +146,7 @@ const storeData = (type, time, loc, fdir, data) => {
}
-
${
loc
.
EMD
}
${
type
===
OUT
?
OUTSIDE
:
USERS
}
data append.`
}
-
${
loc
.
EMD
}
${
type
===
OUT
?
OUTSIDE
:
USERS
}
data append.`
);
);
});
});
}
});
});
};
};
...
@@ -142,11 +166,13 @@ const handleOutData = async (locCode, lat, lng) => {
...
@@ -142,11 +166,13 @@ const handleOutData = async (locCode, lat, lng) => {
const
loc
=
locCodeSep
(
locCode
);
const
loc
=
locCodeSep
(
locCode
);
const
time
=
getTimeInfo
();
const
time
=
getTimeInfo
();
const
f
dir
=
await
getDataDIR
(
loc
,
time
,
OUT
,
OUTSIDE
);
const
dir
s
=
await
getDataDIR
(
loc
,
time
,
OUT
,
OUTSIDE
);
const
data
=
`
${
time
.
month
}
,
${
time
.
date
}
,
${
time
.
hour
}
,
${
time
.
minute
}
,
${
temp
}
,
${
humi
}
,
${
press
}
,
${
wind_speed
}
\n`
;
// 데이터 형식 - [ 연 월 일 시 분 | 온도 | 습도 | 기압 | 풍속 ]
const
data
=
`
${
time
.
year
}${
time
.
month
}${
time
.
date
}${
time
.
hour
}${
time
.
minute
}
,
${
temp
}
,
${
humi
}
,
${
press
}
,
${
wind_speed
}
\n`
;
storeData
(
OUT
,
time
,
loc
,
fdir
,
data
);
storeData
(
OUT
,
time
,
loc
,
dirs
.
base
,
data
);
storeData
(
OUT
,
time
,
loc
,
dirs
.
base
+
dirs
.
time
,
data
);
};
};
// 내부 수집기로 부터 들어온 정보 처리
// 내부 수집기로 부터 들어온 정보 처리
...
@@ -154,11 +180,13 @@ const handleInData = async (id, locCode, temp, humi, lights) => {
...
@@ -154,11 +180,13 @@ const handleInData = async (id, locCode, temp, humi, lights) => {
const
loc
=
locCodeSep
(
locCode
);
const
loc
=
locCodeSep
(
locCode
);
const
time
=
getTimeInfo
();
const
time
=
getTimeInfo
();
const
fdir
=
await
getDataDIR
(
loc
,
time
,
IN
,
id
);
const
dirs
=
await
getDataDIR
(
loc
,
time
,
IN
,
id
);
// 데이터 형식 - [ 월 | 일 | 시 | 분 | 온도 | 습도 | 광도 ]
const
data
=
`
${
time
.
month
}
,
${
time
.
date
}
,
${
time
.
hour
}
,
${
time
.
minute
}
,
${
temp
}
,
${
humi
}
,
${
lights
}
\n`
;
// 데이터 형식 - [ 연 월 일 시 분 | 온도 | 습도 | 광도 ]
const
data
=
`
${
time
.
year
}${
time
.
month
}${
time
.
date
}${
time
.
hour
}${
time
.
minute
}
,
${
temp
}
,
${
humi
}
,
${
lights
}
\n`
;
storeData
(
IN
,
time
,
loc
,
fdir
,
data
);
storeData
(
IN
,
time
,
loc
,
dirs
.
base
,
data
);
storeData
(
IN
,
time
,
loc
,
dirs
.
base
+
dirs
.
time
,
data
);
};
};
// 데이터 수신 처리
// 데이터 수신 처리
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment