squeal
377
Stars
—
Forks
0
Watchers
—
Open Issues
待补全
许可证
Haskell
语言
—
创建时间
最近更新
项目能做什么
Squeal 是一个面向 Haskell 的 PostgreSQL 强类型嵌入库。它把 SQL 语法与模式(Schema)深度映射到 Haskell 类型系统,解决传统字符串 SQL 缺乏编译期校验、易出错的问题。
其核心功能包括:
1. **类型安全**:全面覆盖 DDL、DQL 与 DML,在编译期校验字段、NULL、主外键等约束。
2. **泛型编解码**:基于 `generics-sop` 自动转换 Haskell 记录与 SQL 参数/结果。
3. **完善生态**:支持连接池、事务、迁移及原生 SQL 逃逸机制。
来源:AI 基于仓库事实生成
· 内容以仓库实际 README 为准
使用说明 查看原始 README 原仓库文档
中文使用说明暂未生成。下面保留原仓库 README 摘录,命令与配置均以原文为准。
原始 README 摘录(英文原文,节选前 3000 字符)
# squeal  [](https://github.com/morphismtech/squeal/actions/workflows/ci.yml) [Github](https://github.com/morphismtech/squeal) [Hackage](https://hackage.haskell.org/package/squeal-postgresql) [Stackage](https://www.stackage.org/package/squeal-postgresql) [YouTube](https://www.youtube.com/watch?v=rWfEQfAaNc4) ## introduction Squeal is a deep embedding of SQL into Haskell. By "deep embedding", I am abusing the term somewhat. What I mean is that Squeal embeds both SQL terms and SQL types into Haskell at the term and type levels respectively. This leads to a very high level of type-safety in Squeal. Squeal embeds not just the structured query language of SQL but also the data manipulation language and the data definition language; that's `SELECT`, `INSERT`, `UPDATE`, `DELETE`, `WITH`, `CREATE`, `DROP`, and `ALTER` commands. Squeal expressions closely match their corresponding SQL expressions so that the SQL they actually generate is completely predictable. They are also highly composable and cover a large portion of SQL. ## features * generic encoding of Haskell tuples and records into query parameters and generic decoding of query results into Haskell records using [`generics-sop`](https://hackage.haskell.org/package/generics-sop) * access to SQL alias system using the `OverloadedLabels` extension * type-safe `NULL` and `DEFAULT` * type-safe SQL constraints `CHECK`, `UNIQUE`, `PRIMARY KEY` and `FOREIGN KEY` * type-safe aggregation * escape hatches for writing raw SQL * [`mtl`](https://hackage.haskell.org/package/mtl) compatible monad transformer for executing as well as preparing queries and manipulations and [Atkey](https://bentnib.org/paramnotions-jfp.pdf) indexed monad transformer for executing definitions. * linear, pure or impure, one-way or rewindable migrations * connection pools * transactions * views * array, composite and enumerated types * json functions and operations * multischema support * correlated subqueries * window functions * text search * time functions * ranges * indexes * inlining ## installation `stack install squeal-postgresql` ## testing Start postgres on localhost port `5432` and create a database named `exampledb`. On macOS, you can create the database using `createdb exampledb`. `stack test` ## contributing We welcome contributors. Please make pull requests on the `dev` branch instead of `master`. The `Issues` page is a good place to communicate. ## usage Let's see an example! First, we need some language extensions because Squeal uses modern GHC features. ```Haskell >>> :set -XDataKinds -XDeriveGeneric -XOverloadedLabels -XFlexibleContexts >>> :set -XOverloadedStrings -XTypeApplications -XTypeOperators -XGADTs ``` We'll need some imports. ```Haskell >>> import Control.Monad.IO.Class (liftIO) >>> import Data.Int阅读完整原文
项目深度分析 AI 生成
Squeal Schema 代码自动生成与同步 CLI (商业/开源双轨插件)
| 产品构想 | Squeal 最大的痛点是手动用复杂类型系统(DataKinds, TypeOperators)编写数据库 Schema 极繁琐。开发一个连接现有 PostgreSQL 自动逆向工程生成完整 Squeal 强类型定义的命令行工具/CI 检查工具。 |
| 核心功能 | 反向解析 PostgreSQL catalog 生成 Squeal 类型定义;CI 中对比 Haskell 类型与当前 DB 的漂移检测;支持视图、复合类型与外键约束自动映射。 |
| 目标用户 | 已经拥有庞大数据库结构但想引入 Squeal 或在生产中维护 Squeal 的 Haskell 开发团队。 |
| 难度/周期 | 中等 · 1-2 个月 · 成本:低(主要为开发工时与测试 PostgreSQL 实例) |
| 收费模式 | 核心开源,高级功能(企业级多 Schema 编排、团队规则定制、CI/CD 自动化集成报告)采取商业许可证或按席位收费。 |
| 竞争风险 | Haskell 生态整体规模较小,目标客群总量有限。 |
| 依据 | 已验证事实 |
企业级 Haskell + Postgres 架构咨询与专家支持订阅
| 产品构想 | 针对使用 Haskell 研发高可靠金融/核心交易系统的大中型企业,提供 Squeal 迁移、类型级性能调优(避免超长编译时间)及生产故障支持服务。 |
| 核心功能 | Squeal 复杂查询类型推导排错;GHC 编译时间优化咨询;零停机数据迁移方案设计;专属 SLA 技术响应。 |
| 目标用户 | 金融科技、Web3、数字资产交易所或核心物流等高合规/强类型要求的技术团队。 |
| 难度/周期 | 高 · 按需服务 / 持续按年订阅 · 成本:极低(主要是时间成本) |
| 收费模式 | 专家支持年费订阅(如 $5,000 - $20,000/年/团队)或短期架构审计咨询。 |
| 竞争风险 | 极度依赖个人在 Haskell 社区的技术声誉与人脉,销售周期较长。 |
| 依据 | 数据支持的判断 |
Squeal 开发者效能与高级监控扩展包 (Pro Extension)
| 产品构想 | 提供开箱即用的生产级扩展库,包含基于 OpenTelemetry 的分布式链路追踪埋点、细粒度慢查询与连接池指标暴露,以及针对大型复杂查询的性能分析器。 |
| 核心功能 | Squeal 内部 SQL 模板级埋点与 Trace ID 传播;Prometheus 原生指标导出;连接池耗尽告警与智能重试中间件。 |
| 目标用户 | 运行大规模 Haskell 微服务并使用 Squeal 访问数据库的 DevOps 与后端工程师。 |
| 难度/周期 | 中等 · 2-3 个月 · 成本:低 |
| 收费模式 | 商业闭源库授权(单项目或按服务器节点收费)。 |
| 竞争风险 | 部分监控基础设施功能可能被通用 Haskell APM 方案或外部 proxy(如 PgBouncer/OpenTelemetry Collector)替代。 |
| 依据 | 尚需验证的假设 |
AI 基于仓库公开数据分析生成,含推测成分,不构成收益承诺。
报告会保存到 个人中心
竞品与相似项目 GitHub Search 真实检索
相似项目数据正在完善中,暂不展示(避免误导)
项目优势与风险
| 技术成熟度 | 创建时间待补全,最近推送 ,发布过 14 个 Release |
| 社区活跃 | Star 377 / Fork 0 / Issue 0(数据支持,可自行核实) |
| 许可证 | 未检测到(需人工确认) |
| 主要风险 | 上游项目方向可能变化;同赛道竞争者较多(见竞品表);热度与需求不完全等价 |
安装与使用
此项目未提供 Docker 镜像,安装步骤以原仓库 README 为准(涉及依赖安装与环境配置,对新手门槛较高)。