feat: 更新数据表气象数据存储类型
This commit is contained in:
parent
1c88bde080
commit
ecf3a153f0
38
model/db.go
38
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() {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user