wlminimal

wlminimal

Hello guys

I am working on Ecto pagination using Scrivener.
First I wanted to paginate contacts in Phonebook. So I did like this.

in phonebook_controller.ex

  # Show Contact List
  def show(conn, %{"id" => id} = params) do
    user = conn.assigns.current_user
    phonebook = Contact.get_phonebook!(id, user.id)
    # pass the params for pagination
    page = Contact.get_people(phonebook.id, params)
    render(conn, "show.html", phonebook: phonebook, people: page)
  end

in contact.ex
def get_people(phonebook_id, params) do
    query = from p in Person, where: p.phonebook_id == ^phonebook_id
    Repo.paginate(query, params)
end

And it works,

but I have a Order schema and LineItems as embeds_many like this.

  schema "orders" do
    field :counts, :integer
    field :status, :string
    embeds_many :line_items, LineItem, on_replace: :delete

    timestamps()
  end

what I want to do is to paginate LineItems in the page. But I couldn’t do it..
I tried this.

 query = from r in Order, where: r.id == ^recipients_id and r.status == "In Recipients List", select: r.line_items
 Texting.Repo.paginate(query, conn.params)

and it returns this

%Scrivener.Page{
  entries: [
    [
      %Texting.Sales.LineItem{
        id: "b9f72136-bb83-461b-8362-1cf01c8df306",
        name: "john",
        person_id: 5,
        phone_number: "2134323197"
      },
      %Texting.Sales.LineItem{
        id: "cf0bfd68-7eaf-4ad3-acbe-4001adf4442b",
        name: "Mom",
        person_id: 1,
        phone_number: "1232844340"
      },
      %Texting.Sales.LineItem{
        id: "bbd868be-690a-431a-bd67-07ecf3fe6dd8",
        name: "Dad",
        person_id: 2,
        phone_number: "1234578547"
      },
      %Texting.Sales.LineItem{
        id: "d483dbc2-926a-4493-87df-8edc7242bf81",
        name: "Alan",
        person_id: 3,
        phone_number: "3265412547"
      },
      %Texting.Sales.LineItem{
        id: "8de2f14f-1015-429e-b647-223bb3df2562",
        name: "Jimmy", 
        person_id: 4,
        phone_number: "1953254781"
      },
      %Texting.Sales.LineItem{
        id: "5e61b915-b711-4c2e-afa6-e1aecdaf53cd",
        name: "Lee",
        person_id: 7,
        phone_number: "3264123215"
      },
      %Texting.Sales.LineItem{
        id: "f4cefa4a-301c-434a-9a1d-636c8284c380",
        name: "Kevin",
        person_id: 8,
        phone_number: "5559872478"
      }
    ]
  ],
  page_number: 1,
  page_size: 5,
  total_entries: 1,
  total_pages: 1
}

This is something expected.. because line_itmes is a list itself in Order schema. so it is nested list,
Pagination recognize line_item(list) as just 1 entry.

How can I get this working?
Please help! :slight_smile:

Showing Posts 1 to 1

mbuhot

mbuhot

Assuming the embeds_many is declared as an array field in Postgres, you should be able to use a fragment and unnest to get each item back as a separate row.
From there scrivener should work as normal.

— All posts loaded —

Where Next? Top

Trending in Questions Top

katta
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
brecabral
Documentation While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
achenet
Hello, I’m trying to build a basic Phoenix web-app, and I’d like to use Tailwind. However, when I launch mix phx.server, I get an error...
New
kpanic
Hi everyone, I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding. I sta...
New
asweet-confluent
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
Cxx-mlr
I’m working on a small exercise involving update_in/3, and I came up with this solution: data = %{ name: "Periodic Table", category:...
New
ChrisAmelia
I’ve got trouble wrapping my head around the order in which functions are called in this snippet (from Phoenix’s authentication): toke...
New

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
New
budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews