auto commit
This commit is contained in:
parent
1419114d1e
commit
a9af1bf315
@ -6,41 +6,79 @@ class SensorDataModel {
|
||||
|
||||
async initialize() {
|
||||
await this.pool.query(`
|
||||
CREATE TABLE IF NOT EXISTS sensor_data (
|
||||
time TIMESTAMPTZ NOT NULL,
|
||||
company_id UUID NOT NULL,
|
||||
device_id VARCHAR(50) NOT NULL,
|
||||
data_type VARCHAR(50) NOT NULL,
|
||||
value DOUBLE PRECISION NOT NULL,
|
||||
metadata JSONB,
|
||||
CONSTRAINT sensor_data_pk PRIMARY KEY (time, company_id, device_id)
|
||||
);
|
||||
|
||||
SELECT create_hypertable('sensor_data', 'time',
|
||||
chunk_time_interval => INTERVAL '1 day',
|
||||
if_not_exists => TRUE
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_sensor_company_device
|
||||
ON sensor_data (company_id, device_id, time DESC);
|
||||
`);
|
||||
CREATE TABLE IF NOT EXISTS sensor_data (
|
||||
time TIMESTAMPTZ NOT NULL,
|
||||
companyId UUID NOT NULL,
|
||||
branchId UUID NOT NULL,
|
||||
deviceId VARCHAR(50) NOT NULL,
|
||||
data_type VARCHAR(50) NOT NULL,
|
||||
value DOUBLE PRECISION NOT NULL,
|
||||
metadata JSONB,
|
||||
CONSTRAINT sensor_data_pk PRIMARY KEY (time, companyId, branchId, deviceId)
|
||||
);
|
||||
|
||||
SELECT create_hypertable('sensor_data', 'time',
|
||||
chunk_time_interval => INTERVAL '1 day',
|
||||
if_not_exists => TRUE
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_sensor_company_branch_device
|
||||
ON sensor_data (companyId, branchId, deviceId, time DESC);
|
||||
`);
|
||||
}
|
||||
|
||||
async insert(data) {
|
||||
const query = `
|
||||
INSERT INTO sensor_data (time, company_id, device_id, data_type, value, metadata)
|
||||
VALUES ($1, $2, $3, $4, $5, $6)
|
||||
`;
|
||||
|
||||
INSERT INTO sensor_data (time, companyId, branchId, deviceId, data_type, value, metadata)
|
||||
VALUES ($1, $2, $3, $4, $5, $6, $7)
|
||||
`;
|
||||
// 매개변수 개수를 7개로 수정
|
||||
await this.pool.query(query, [
|
||||
data.time,
|
||||
data.companyId,
|
||||
data.branchId,
|
||||
data.deviceId,
|
||||
data.dataType,
|
||||
data.value,
|
||||
data.metadata,
|
||||
]);
|
||||
}
|
||||
|
||||
// 데이터 조회 메서드 추가
|
||||
async getLatestByDevice(companyId, branchId, deviceId) {
|
||||
const query = `
|
||||
SELECT * FROM sensor_data
|
||||
WHERE companyId = $1 AND branchId = $2 AND deviceId = $3
|
||||
ORDER BY time DESC
|
||||
LIMIT 1
|
||||
`;
|
||||
const result = await this.pool.query(query, [
|
||||
companyId,
|
||||
branchId,
|
||||
deviceId,
|
||||
]);
|
||||
return result.rows[0];
|
||||
}
|
||||
|
||||
// 기간별 데이터 조회
|
||||
async getDataByTimeRange(companyId, branchId, deviceId, startTime, endTime) {
|
||||
const query = `
|
||||
SELECT * FROM sensor_data
|
||||
WHERE companyId = $1
|
||||
AND branchId = $2
|
||||
AND deviceId = $3
|
||||
AND time BETWEEN $4 AND $5
|
||||
ORDER BY time DESC
|
||||
`;
|
||||
const result = await this.pool.query(query, [
|
||||
companyId,
|
||||
branchId,
|
||||
deviceId,
|
||||
startTime,
|
||||
endTime,
|
||||
]);
|
||||
return result.rows;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = SensorDataModel;
|
||||
|
Loading…
Reference in New Issue
Block a user