登录 注册
AI 模型与开发框架
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

![squeal-icon](https://raw.githubusercontent.com/morphismtech/squeal/dev/squeal.gif)

[![GithubWorkflowCI](https://github.com/morphismtech/squeal/actions/workflows/ci.yml/badge.svg)](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 为准(涉及依赖安装与环境配置,对新手门槛较高)。