live_svelte/example_project/lib/example/notes.ex

56 lines
1 KiB
Elixir
Raw Permalink Normal View History

defmodule Example.Notes do
@moduledoc """
Context module for managing notes.
"""
import Ecto.Query
alias Example.Repo
alias Example.Note
@doc """
Returns all notes ordered by creation date (newest first).
"""
def list_notes do
Note
|> order_by(desc: :inserted_at)
|> Repo.all()
end
@doc """
Gets a single note by ID.
Raises `Ecto.NoResultsError` if the note does not exist.
"""
def get_note!(id), do: Repo.get!(Note, id)
@doc """
Creates a new note.
"""
def create_note(attrs \\ %{}) do
%Note{}
|> Note.changeset(attrs)
|> Repo.insert()
end
@doc """
Updates an existing note.
"""
def update_note(%Note{} = note, attrs) do
note
|> Note.changeset(attrs)
|> Repo.update()
end
@doc """
Deletes a note.
"""
def delete_note(%Note{} = note) do
Repo.delete(note)
end
@doc """
Returns a changeset for tracking note changes.
"""
def change_note(%Note{} = note, attrs \\ %{}) do
Note.changeset(note, attrs)
end
end