From ecf3a153f0241f0cd15664286428f70ba9297a7d Mon Sep 17 00:00:00 2001 From: yarnom Date: Fri, 8 Aug 2025 10:39:43 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E8=A1=A8=E6=B0=94=E8=B1=A1=E6=95=B0=E6=8D=AE=E5=AD=98=E5=82=A8?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- model/db.go | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/model/db.go b/model/db.go index 068c4e7..4cb094f 100644 --- a/model/db.go +++ b/model/db.go @@ -42,21 +42,33 @@ func InitDB() error { func createRS485Table() error { _, err := db.Exec(` CREATE TABLE IF NOT EXISTS rs485_weather_data ( - id SERIAL PRIMARY KEY, + id BIGSERIAL PRIMARY KEY, station_id VARCHAR(50) NOT NULL, - timestamp TIMESTAMP NOT NULL, - temperature DECIMAL(5,2), -- 温度(摄氏度) - humidity DECIMAL(5,2), -- 湿度(%) - wind_speed DECIMAL(5,2), -- 风速(m/s) - wind_direction DECIMAL(5,2), -- 风向(度) - rainfall DECIMAL(5,2), -- 降雨量(mm) - light DECIMAL(10,2), -- 光照(lux) - uv DECIMAL(5,2), -- 紫外线 - pressure DECIMAL(7,2), -- 气压(hPa) - raw_data TEXT, -- 原始数据 - FOREIGN KEY (station_id) REFERENCES stations(station_id) + timestamp TIMESTAMPTZ NOT NULL, + temperature DOUBLE PRECISION, + humidity DOUBLE PRECISION, + wind_speed DOUBLE PRECISION, + wind_direction DOUBLE PRECISION, + rainfall DOUBLE PRECISION, + light DOUBLE PRECISION, + uv DOUBLE PRECISION, + pressure DOUBLE PRECISION, + raw_data TEXT, + FOREIGN KEY (station_id) REFERENCES stations(station_id), + UNIQUE (station_id, timestamp) )`) - return err + if err != nil { + return err + } + + // 支持性索引(若已存在则不重复创建) + if _, err = db.Exec(`CREATE INDEX IF NOT EXISTS idx_rwd_time ON rs485_weather_data (timestamp)`); err != nil { + return err + } + if _, err = db.Exec(`CREATE INDEX IF NOT EXISTS idx_rwd_station_time ON rs485_weather_data (station_id, timestamp)`); err != nil { + return err + } + return nil } func CloseDB() {