LibEctoV2 (lib_ecto v0.4.0)
View Source一个轻量级的 Elixir ORM 扩展工具,帮助你快速构建数据库操作接口。
特点
- 简化 CRUD 操作
- 自动生成数据库操作函数
- 灵活的过滤器机制
- 支持分页查询
- 与 Ecto 无缝集成
使用方法
使用 use LibEctoV2 宏可以自动生成一系列数据库操作函数,如 create_one/1、get_one/1、get_all/1 等。
defmodule MyApp.UserRepo do
use LibEctoV2
@repo MyApp.Repo
@schema MyApp.User
@filters [:id, :name, :email]
def init_filter, do: true
def filter(:id, dynamic, %{"id" => id}) do
{:ok, dynamic_and(dynamic, id: ^id)}
end
def filter(:name, dynamic, %{"name" => name}) do
{:ok, dynamic_and(dynamic, name: ^name)}
end
def filter(:email, dynamic, %{"email" => email}) do
{:ok, dynamic_and(dynamic, email: ^email)}
end
def filter(_, dynamic, _), do: {:ok, dynamic}
end
Summary
Functions
在编译时生成 CRUD 函数。
使用此宏将 LibEctoV2 的功能引入到当前模块。
根据提供的参数和过滤器构建查询条件。
动态构建 AND 条件。
动态构建 OR 条件。
生成类型定义。
生成写操作相关的函数。
Functions
在编译时生成 CRUD 函数。
该方法已废弃,请使用 LibEctoV2.Core.before_compile/1。
使用此宏将 LibEctoV2 的功能引入到当前模块。
此宏会注册必要的模块属性,并设置 __before_compile__ 回调来生成 CRUD 函数。
示例
defmodule MyApp.UserRepo do
use LibEctoV2
@repo MyApp.Repo
@schema MyApp.User
@filters [:id, :name, :email]
def init_filter, do: true
def filter(:id, dynamic, %{"id" => id}) do
{:ok, dynamic_and(dynamic, id: ^id)}
end
end
@spec build_condition(any(), map(), list(), function(), boolean()) :: {:ok, any()} | {:error, any()}
根据提供的参数和过滤器构建查询条件。
参数
init: 初始查询条件params: 包含过滤参数的映射filters: 过滤器列表filter_fn: 用于应用过滤器的函数check_empty?: 是否检查空条件,默认为true
返回值
{:ok, dynamic}: 成功构建的查询条件{:error, reason}: 发生错误时的错误原因
示例
iex> init = true
iex> params = %{"name" => "test"}
iex> filters = [:name, :age]
iex> filter_fn = &MyModule.filter/3
iex> LibEctoV2.build_condition(init, params, filters, filter_fn)
{:ok, dynamic_expr}
动态构建 AND 条件。
该方法已废弃,请使用 LibEctoV2.Core.dynamic_and/2。
参数
dynamic: 当前的动态条件conditions: 要添加的条件
返回值
- 包含新条件的动态表达式
动态构建 OR 条件。
该方法已废弃,请使用 LibEctoV2.Core.dynamic_or/2。
参数
dynamic: 当前的动态条件conditions: 要添加的条件
返回值
- 包含新条件的动态表达式
生成获取多条记录的函数。
参数
schema: 模式模块repo: 仓库模块columns: 列名列表filters: 过滤器列表
返回值
- 包含获取多条记录函数的 quoted 表达式
生成获取单条记录的函数。
参数
schema: 模式模块repo: 仓库模块columns: 列名列表filters: 过滤器列表
返回值
- 包含获取单条记录函数的 quoted 表达式
生成其他辅助函数。
参数
schema: 模式模块repo: 仓库模块filters: 过滤器列表
返回值
- 包含辅助函数的 quoted 表达式
生成类型定义。
参数
schema: 模式模块
返回值
- 包含类型定义的 quoted 表达式
生成写操作相关的函数。
参数
schema: 模式模块repo: 仓库模块filters: 过滤器列表
返回值
- 包含写操作函数的 quoted 表达式