Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrate gallery.go and validations.go to goqu #23

Open
Tracked by #5
CrescentKohana opened this issue Apr 6, 2022 · 1 comment
Open
Tracked by #5

Migrate gallery.go and validations.go to goqu #23

CrescentKohana opened this issue Apr 6, 2022 · 1 comment

Comments

@CrescentKohana
Copy link
Member

CrescentKohana commented Apr 6, 2022

This one might be the most challenging part of the goqu rework.

  • GetGalleries function is very elaborate and prone to bugs if not converted carefully.
  • UpdateGallery can probably be refactored to be much shorter and better written overall. The Jet library made it hard to do partial updates.
  • NeedsUpdate isn't used anywhere currently and can be pretty much ignored
@CrescentKohana
Copy link
Member Author

Raw SQL by Jet can be seen with println(stmt.DebugSql())

Example for /galleries?tag=female:swimsuit&tag=female:bikini&sortby=original:

SELECT galleries.`gallery.uuid` AS "gallery.uuid",
     galleries.`gallery.library_id` AS "gallery.library_id",
     galleries.`gallery.archive_path` AS "gallery.archive_path",
     galleries.`gallery.title` AS "gallery.title",
     galleries.`gallery.title_native` AS "gallery.title_native",
     galleries.`gallery.title_translated` AS "gallery.title_translated",
     galleries.`gallery.category` AS "gallery.category",
     galleries.`gallery.series` AS "gallery.series",
     galleries.`gallery.released` AS "gallery.released",
     galleries.`gallery.language` AS "gallery.language",
     galleries.`gallery.translated` AS "gallery.translated",
     galleries.`gallery.nsfw` AS "gallery.nsfw",
     galleries.`gallery.hidden` AS "gallery.hidden",
     galleries.`gallery.image_count` AS "gallery.image_count",
     galleries.`gallery.archive_size` AS "gallery.archive_size",
     galleries.`gallery.archive_hash` AS "gallery.archive_hash",
     galleries.`gallery.thumbnail` AS "gallery.thumbnail",
     galleries.`gallery.created_at` AS "gallery.created_at",
     galleries.`gallery.updated_at` AS "gallery.updated_at",
     tag.namespace AS "tag.namespace",
     tag.name AS "tag.name",
     reference.exh_gid AS "reference.exh_gid",
     reference.exh_token AS "reference.exh_token",
     reference.urls AS "reference.urls"
FROM (
          SELECT gallery.uuid AS "gallery.uuid",
               gallery.library_id AS "gallery.library_id",
               gallery.archive_path AS "gallery.archive_path",
               gallery.title AS "gallery.title",
               gallery.title_native AS "gallery.title_native",
               gallery.title_translated AS "gallery.title_translated",
               gallery.category AS "gallery.category",
               gallery.series AS "gallery.series",
               gallery.released AS "gallery.released",
               gallery.language AS "gallery.language",
               gallery.translated AS "gallery.translated",
               gallery.nsfw AS "gallery.nsfw",
               gallery.hidden AS "gallery.hidden",
               gallery.image_count AS "gallery.image_count",
               gallery.archive_size AS "gallery.archive_size",
               gallery.archive_hash AS "gallery.archive_hash",
               gallery.thumbnail AS "gallery.thumbnail",
               gallery.created_at AS "gallery.created_at",
               gallery.updated_at AS "gallery.updated_at"
          FROM gallery
          WHERE TRUE AND (EXISTS (
                     SELECT NULL
                     FROM gallery_tag AS gt
                          INNER JOIN tag AS t ON (t.id = gt.tag_id)
                     WHERE ((t.namespace IN ('female', 'female')) AND (t.name IN ('swimsuit', 'bikini'))) AND (gt.gallery_uuid = gallery.uuid)
                     GROUP BY gt.gallery_uuid
                     HAVING COUNT(t.name) = 2
                ))
          ORDER BY gallery.title ASC
          LIMIT 50
          OFFSET 0
     ) AS galleries
     LEFT JOIN gallery_tag ON (gallery_tag.gallery_uuid = galleries.`gallery.uuid`)
     LEFT JOIN tag ON (tag.id = gallery_tag.tag_id)
     LEFT JOIN reference ON (reference.gallery_uuid = galleries.`gallery.uuid`);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant