auto commit
This commit is contained in:
parent
1419114d1e
commit
a9af1bf315
@ -8,12 +8,13 @@ class SensorDataModel {
|
|||||||
await this.pool.query(`
|
await this.pool.query(`
|
||||||
CREATE TABLE IF NOT EXISTS sensor_data (
|
CREATE TABLE IF NOT EXISTS sensor_data (
|
||||||
time TIMESTAMPTZ NOT NULL,
|
time TIMESTAMPTZ NOT NULL,
|
||||||
company_id UUID NOT NULL,
|
companyId UUID NOT NULL,
|
||||||
device_id VARCHAR(50) NOT NULL,
|
branchId UUID NOT NULL,
|
||||||
|
deviceId VARCHAR(50) NOT NULL,
|
||||||
data_type VARCHAR(50) NOT NULL,
|
data_type VARCHAR(50) NOT NULL,
|
||||||
value DOUBLE PRECISION NOT NULL,
|
value DOUBLE PRECISION NOT NULL,
|
||||||
metadata JSONB,
|
metadata JSONB,
|
||||||
CONSTRAINT sensor_data_pk PRIMARY KEY (time, company_id, device_id)
|
CONSTRAINT sensor_data_pk PRIMARY KEY (time, companyId, branchId, deviceId)
|
||||||
);
|
);
|
||||||
|
|
||||||
SELECT create_hypertable('sensor_data', 'time',
|
SELECT create_hypertable('sensor_data', 'time',
|
||||||
@ -21,26 +22,63 @@ class SensorDataModel {
|
|||||||
if_not_exists => TRUE
|
if_not_exists => TRUE
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE INDEX IF NOT EXISTS idx_sensor_company_device
|
CREATE INDEX IF NOT EXISTS idx_sensor_company_branch_device
|
||||||
ON sensor_data (company_id, device_id, time DESC);
|
ON sensor_data (companyId, branchId, deviceId, time DESC);
|
||||||
`);
|
`);
|
||||||
}
|
}
|
||||||
|
|
||||||
async insert(data) {
|
async insert(data) {
|
||||||
const query = `
|
const query = `
|
||||||
INSERT INTO sensor_data (time, company_id, device_id, data_type, value, metadata)
|
INSERT INTO sensor_data (time, companyId, branchId, deviceId, data_type, value, metadata)
|
||||||
VALUES ($1, $2, $3, $4, $5, $6)
|
VALUES ($1, $2, $3, $4, $5, $6, $7)
|
||||||
`;
|
`;
|
||||||
|
// 매개변수 개수를 7개로 수정
|
||||||
await this.pool.query(query, [
|
await this.pool.query(query, [
|
||||||
data.time,
|
data.time,
|
||||||
data.companyId,
|
data.companyId,
|
||||||
|
data.branchId,
|
||||||
data.deviceId,
|
data.deviceId,
|
||||||
data.dataType,
|
data.dataType,
|
||||||
data.value,
|
data.value,
|
||||||
data.metadata,
|
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;
|
module.exports = SensorDataModel;
|
||||||
|
Loading…
Reference in New Issue
Block a user