shahryarjb

shahryarjb

Scrivener lib doesn't load some records

Hello, I created an issue in scrivener github, but scrivener owner closed my topic without any help or comment. but I still have a problem with this lib

my Topic:

Hello, when I use Repo.all(query) to load 49 records I have the record concerned and I have no problem all records are displayed , but when I use scrivener to load 20 records on each page like this:

  def show_error_brands(pagenumber, category_id) do
    query = from u in ErrorBrandSchema,
        where: u.category_id == ^category_id,
        order_by: [desc: u.inserted_at],
        join: c in assoc(u, :error_categories),
        select: %{
          id: u.id,
          title: u.title,
          description: u.description,
          image: u.image,
          status: u.status,
          category_id: u.category_id,
          inserted_at: u.inserted_at,
          updated_at: u.updated_at,
          category_name: c.title
        }
    Repo.paginate(query, %{page: pagenumber, page_size: 20})
  end

some data is not displayed, but they exist in my database, I use UUID

I use psql 11 and {:scrivener_ecto, "~> 2.2"} , elixir 1.9 , {:phoenix_ecto, "~> 4.0"}

Help me please
my migration:

defmodule BankError.Repo.Migrations.ErrorBrands do
  use Ecto.Migration

  def change do
    create table(:error_brands, primary_key: false) do
      add :id, :uuid, primary_key: true

      add :title, :string, size: 150, null: false
      add :short_description, :string, size: 164, null: false
      add :description, :text,  null: false
      add :image, :string, size: 200, null: false
      add :seo_alias_link, :string, size: 200, null: false
      add :seo_words, :string, size: 150, null: false
      add :seo_description, :string, size: 164, null: false
      add :status, :boolean, null: false

      add :category_id, references(:error_categories, on_delete: :nothing, type: :uuid)
      timestamps()
    end
    create(
      index(:error_brands, [:seo_alias_link],
        # concurrently: true,
        name: :unique_index_on_error_brands_seo_alias_link,
        unique: true
      )
    )
  end
end

Please help me to fix this, Thanks

my issue: scrivener dosent load some records · Issue #83 · mojotech/scrivener_ecto · GitHub

the other issue without any comment: Paginate join incorrect · Issue #61 · mojotech/scrivener_ecto · GitHub

Marked As Solved

NobbZ

NobbZ

Only if they have the same updated_at and id. And I hope id will not clash ever :smiley:

Adding the id to the sorted_by is a trick to stabilize the usually unstable sort.

Any column that is guaranteed to have unique values among the result set is fine. For id its easy to guarantee and therefore its used quite often.

Also Liked

NobbZ

NobbZ

You should sort the other way round.

This will only consider updated_at when the ids are equal, which is unlikely to happen…

LostKobrakai

LostKobrakai

Try adding ordering by your uuid. If rows have the same inserted_at value ordering between them is not deterministic.

NobbZ

NobbZ

What I meant was, you should do order_by: [desc: u.updated_at, desc: u.id].

The problem with only sorting over u.updated_at is, that items with the same updated_at will be ordered randomly each time the query is sent to the DB. This is by the design of most databases. That might cause, that an item close to pagination border to hop between pages, and beeing either displayed on neither page or on both.

This might then be observed as “items appear twice” or “items are missing”.

Where Next?

Popular in Questions Top

jay1
Why is it that the mnesia database isn’t the most preferred database for use in Elixir/Phoenix?
New
stefanluptak
Hello everybody, usually, I use a 29" ultra-wide monitor for VSCode which can easily accomodate explorer (files panel) + file with code ...
New
vrod
I am using the Starship cross-shell prompt – it seems pretty nice, but I get some errors: [WARN] - (starship::utils): Executing command ...
New
belgoros
I’m not a pro in using Regex and can’t figure out why the following behaviour happens, especially if we take into account the difference ...
New
JDanielMartinez
Hi! May someone helps me, please! I have two apps into an umbrella project: the first one is Database, which manages queries, and the se...
New
script
If I have a string “1000 cfu/ml” . I want to remove the characters and / and space . So the string is like this "1000" What is the ...
New
WestKeys
Currently suffering from paralysis by [HTTP client] analysis. This is rather unusual in Elixirland as there tends to be consensus on the ...
New
openscript
Hello! Sorry for this astonishing simple question, but I’m really stuck. I try to set up the intellij-elixir plugin, but I don’t know ho...
New
PeterCarter
There are pre-rolled solutions for other frameworks that do work. However, Phoenix does not seem to have these. Have people had good expe...
New
jononomo
For some reason my phoenix channels are working for me in my local dev environment, but as soon as I deploy via Docker, I get a 403 error...
New

Other popular topics Top

Fl4m3Ph03n1x
About me? ( if you have nothing better to do than reading about some random guy in the internet :stuck_out_tongue: ) Hello all, this is ...
New
jerry
Good day to you all. I have been struggling to get a query involving like and ilike to work. Can anyone assist me on this, please? pro...
New
chrismccord
This release brings a number of exciting features, including integration with the new Phoenix LiveDashboard and Phoenix LiveView. There h...
New
hariharasudhan94
lets say i have a sample like a = 20; b = 10; if (a > b) do {:ok, "a"} end if (a < b) do {:ok, b} end if (a == b) do {:ok, "equa...
New
vonH
When I run the Plug and I recompile I wind up having to use Ctrl C to quit iex and start again. Witht the help of rlwrap I can use the cu...
New
gausby
I asked this very same question on twitter and got some interesting feedback, but I thought it would be a good question to ask here as we...
1207 39297 209
New
sergio_101
I am VERY much an elixir newbie. I have taken one elixir course and one phoenix course on Udemy. During that course, I saw the instructor...
New
romenigld
I am trying to run a deploy with docker and I successfully runned with this command: docker build -t romenigld/blog-prod . but when I t...
New
marick
I had some trouble figuring out how to make many-to-many associations work. Once I got it working, I wrote a blog post. Because I’m a nov...
New
dogweather
I wrote this comment on r/haskell, and it’s not popular there. :wink: But I think I’m on to something… Haskell reminds me of Java, and e...
New

We're in Beta

About us Mission Statement