LibEctoV2.Core (lib_ecto v0.4.0)
View SourceLibEctoV2 的核心模块,提供基础宏和类型定义。
此模块包含 LibEctoV2 的核心功能,特别是 __using__ 和 __before_compile__ 宏,
它们负责注册必要的属性并生成 CRUD 函数。
Summary
Functions
在编译时生成 CRUD 函数。
此宏会根据模块中定义的属性(:repo、:schema、:filters)生成一系列数据库操作函数。
使用此宏将 LibEctoV2 的功能引入到当前模块。
此宏会注册必要的模块属性,并设置 __before_compile__ 回调来生成 CRUD 函数。
示例
defmodule MyApp.UserRepo do
use LibEctoV2.Core
@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
动态构建 AND 条件。
参数
dynamic: 当前的动态条件conditions: 要添加的条件
返回值
- 包含新条件的动态表达式
示例
iex> dynamic = true
iex> LibEctoV2.Core.dynamic_and(dynamic, name: "test")
#Ecto.Query.DynamicExpr<...>
动态构建 OR 条件。
参数
dynamic: 当前的动态条件conditions: 要添加的条件
返回值
- 包含新条件的动态表达式
示例
iex> dynamic = true
iex> LibEctoV2.Core.dynamic_or(dynamic, name: "test")
#Ecto.Query.DynamicExpr<...>
检查值是否为空(nil 或空字符串)。
参数
value: 要检查的值
返回值
true: 如果值为空false: 如果值不为空
示例
iex> LibEctoV2.Core.is_empty(nil)
true
iex> LibEctoV2.Core.is_empty("")
true
iex> LibEctoV2.Core.is_empty("test")
false