IHP Haskell Framework能否使用PostgreSQL int8range及已有Schema?
在IHP中使用PostgreSQL int8range类型与导入已有Schema实现双时态模型
关于PostgreSQL int8range类型的支持
- IHP原生支持PostgreSQL的范围类型(包括int8range),编辑器无法解析通常是因为缺少手动类型映射。
- 在对应Model文件中添加Haskell类型映射:
import Database.PostgreSQL.Simple.Range (Range) import Data.Int (Int64) type Int8Range = Range Int64 - 在Model字段定义中使用该类型:
instance Table YourTable where tableName = "your_table" primaryKey = #id fields = [ #id, #validPeriod :: Field Int8Range -- 其他字段... ] - 确认项目依赖包含
postgresql-simple(IHP默认已集成),若缺失可在package.yaml中添加对应依赖。
导入已有PostgreSQL Schema到IHP
- IHP支持导入现有Schema,操作步骤:
- 确保
Config/Config.hs中数据库连接配置正确。 - 执行命令生成对应Model文件:
该命令会扫描数据库表结构,自动生成Model类型与字段定义,包含int8range这类特殊类型。./dev/db-migrate generate - 若自动生成的Model未正确识别int8range,可手动添加前述类型映射。
- 实现双时态模型时,可在现有Schema中定义
valid_time、transaction_time两个range字段,导入后在IHP中使用Range类型结合PostgreSQL范围操作符(如@>、<@)完成时态查询。
- 确保
内容的提问来源于stack exchange,提问作者Michael Fliegner
相关产品推荐
相关产品推荐

