Generated Functions Reference

View Source

This guide details all the functions that Aurora.Ctx generates for your context modules.

List Functions

list_products()                # Returns [%Product{}]
list_products(opts)            # Returns [%Product{}] with filtering/sorting
list_products_paginated()      # Returns %Pagination{} with default options
list_products_paginated(opts)  # Returns %Pagination{} with custom options
count_products()               # Returns total count of records
count_products(opts)           # Returns filtered count of records

Example

# Get active products sorted by price
products = list_products(
  where: [status: :active],
  order_by: [asc: :price]
)

The opts parameter supports:

  • :preload - Associations to preload
  • :where - Filter conditions (equality, comparison, range)
  • :or_where - Alternative filter conditions combined with OR
  • :order_by - Sorting specification
  • :paginate - Pagination options (page, per_page)

Get Functions

get_product(id)                # Returns %Product{} or nil
get_product(id, opts)          # Returns %Product{} or nil with preloads
get_product!(id)               # Returns %Product{} or raises Ecto.NoResultsError
get_product!(id, opts)         # Returns %Product{} or raises, with preloads

Example

# Get product with associated category
product = get_product!(1, preload: [:category])

Create Functions

create_product()               # Returns {:ok, %Product{}} with defaults
create_product(attrs)          # Returns {:ok, %Product{}} or {:error, changeset}
create_product!()              # Returns %Product{} or raises
create_product!(attrs)         # Returns %Product{} or raises

Example

{:ok, product} = create_product(%{
  name: "Widget Pro",
  price: Decimal.new("29.99")
})

Update Functions

update_product(entity)         # Returns {:ok, %Product{}} with no changes
update_product(entity, attrs)  # Returns {:ok, %Product{}} or {:error, changeset}

Example

{:ok, updated} = update_product(product, %{price: Decimal.new("39.99")})

Delete Functions

delete_product(entity)         # Returns {:ok, %Product{}} or {:error, changeset}
delete_product!(entity)        # Returns %Product{} or raises

Example

{:ok, deleted} = delete_product(product)

Change Functions

change_product(entity)         # Returns %Ecto.Changeset{} with no changes
change_product(entity, attrs)  # Returns %Ecto.Changeset{} with changes

Example

changeset = change_product(product, %{price: Decimal.new("49.99")})

New Functions

new_product()                  # Returns %Product{} struct
new_product(attrs)             # Returns %Product{} with attributes
new_product(attrs, opts)       # Returns %Product{} with attributes and preloads

Example

product = new_product(%{name: "Widget Pro", price: Decimal.new("29.99")})

Query Options

Where Conditions

# Simple equality
where: [status: :active]

# Comparisons
where: {:price, :greater_than, 100}
where: {:price, :less_than, 200}
where: {:date, :greater_equal_than, ~D[2023-01-01]}

# Ranges
where: {:price, :between, 100, 200}

# Multiple conditions
where: [status: :active, price: {:greater_than, 100}]

Sorting

# Simple sort
order_by: :inserted_at           # ascending
order_by: {:desc, :inserted_at}  # descending

# Multiple fields
order_by: [{:desc, :inserted_at}, {:asc, :name}]

Pagination

# Default pagination
paginate: %{page: 1, per_page: 20}

For implementation examples, check out the Examples guide.