manugoyal/movieserver — pull request #9 by manugoyal (2013-08-09 04:28:57+00:00)
Title: Moved filtering and pagination to the server side

When indexing large directories like my entire home directory, client
side paging becomes infeasable. Moving it over involved processing the
query parameters backgrid sends to the server and using those to page
and filter. The filter string is treated as a prefix string with
wildcard syntax transformed into a LIKE match. I added a few more
optimizations related to paging with very large file entry sets. There
was a latent bug, where when you are on one of the later pages, and
the reindexer deletes data that reduces the number of pages, then you
switch to one of the deleted pages, it would throw an error and not do
anything. On the server side, I handled this by running a COUNT(*)
query and adjusting the page number if the client was out of bounds. I
also changed the sql_interface setup to just map names to query
strings that I could add onto before running, rather than compiling
all the SQL statements in advance. This seemed to make sense given the
extra parameter combinations that filtering and paging added, and the
likelihood that more combinations will be added in the future. Also I
changed the backgrid-paginator CSS to bootstrap CSS, because that was
better. Also I unignored all the .css files, since those shouldn't
have been ignored.