feat: 更新数据表气象数据存储类型

This commit is contained in:
yarnom 2025-08-08 10:39:43 +08:00
parent 1c88bde080
commit ecf3a153f0

View File

@ -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)
)`)
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() {