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 { func createRS485Table() error {
_, err := db.Exec(` _, err := db.Exec(`
CREATE TABLE IF NOT EXISTS rs485_weather_data ( CREATE TABLE IF NOT EXISTS rs485_weather_data (
id SERIAL PRIMARY KEY, id BIGSERIAL PRIMARY KEY,
station_id VARCHAR(50) NOT NULL, station_id VARCHAR(50) NOT NULL,
timestamp TIMESTAMP NOT NULL, timestamp TIMESTAMPTZ NOT NULL,
temperature DECIMAL(5,2), -- 温度摄氏度 temperature DOUBLE PRECISION,
humidity DECIMAL(5,2), -- 湿度% humidity DOUBLE PRECISION,
wind_speed DECIMAL(5,2), -- 风速m/s wind_speed DOUBLE PRECISION,
wind_direction DECIMAL(5,2), -- 风向 wind_direction DOUBLE PRECISION,
rainfall DECIMAL(5,2), -- 降雨量mm rainfall DOUBLE PRECISION,
light DECIMAL(10,2), -- 光照lux light DOUBLE PRECISION,
uv DECIMAL(5,2), -- 紫外线 uv DOUBLE PRECISION,
pressure DECIMAL(7,2), -- 气压hPa pressure DOUBLE PRECISION,
raw_data TEXT, -- 原始数据 raw_data TEXT,
FOREIGN KEY (station_id) REFERENCES stations(station_id) 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() { func CloseDB() {