Fakultas Ilmu Komputer UI

Skip to content
Snippets Groups Projects
Select Git revision
  • cad90ef793c16968244f9d8dc88b3228a103b787
  • master default protected
  • 1706039622-23
  • 2006506981-88
  • 1706979215-129
  • 1706074985-103
  • 1706039723-96
  • 2006507012-84
  • 1706023031-67
  • 1806280552-54
  • 1706074902-17
  • 1706074865-126
  • 1706039912-47
  • 1706074865-123
  • 1906457480-111
  • 1706039710-116
  • 1706040012-48
  • 1706075041-hotfix
  • 1706979215-63
  • 1706979234-92
  • 1706039912-41
21 results

admin.py

Blame
  • Forked from ppl-fasilkom-ui / 2020 / PPL-C / Diskominfo Depok-DIGIPUS / Marjinal-DIGIPUS
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    forum_thread_page.ex 1.32 KiB
    defmodule Diskuy.ForumThreadPage do
      @moduledoc """
      The Query Builder For Paging Thread Schema.
      """
    
      import Ecto.Query, warn: false
      alias Diskuy.Account.User
      alias Diskuy.Forum.Topic
      alias Diskuy.Forum.Thread
    
      def page_recent do
        query = query_start()
                |> order_by([tr], desc: tr.inserted_at, asc: tr.title)
        query
      end
    
      def page_top do
        query_start()
        |> order_by([tr], desc: tr.points, desc: tr.inserted_at, asc: tr.title)
      end
    
      def page_search(title)do
        query_start()
        |> where([p], ilike(p.title, ^"%#{String.replace(title, ~r/[%_(\\)]/, "\\\\\\0") }%"))
      end
    
      def page_per_topic(topic_id) do
        query_start()
        |> where([tr], tr.topic_id == ^topic_id)
        |> order_by([tr], desc: tr.inserted_at, asc: tr.title)
      end
    
      defp query_start do
        Thread
        |> join(:inner, [tr], to in Topic, as: :topics, on: tr.topic_id == to.id)
        |> join(:inner, [tr], u in User, as: :users, on: tr.user_id == u.id)
        |> select([tr, to, u], %{thread: %{id: tr.id, title: tr.title,
                                 content: tr.content, points: tr.points,
                                 user_id: tr.user_id, topic_id: tr.topic_id, topic_name: to.name,
                                 username: u.username, inserted_at: tr.inserted_at,
                                 updated_at: tr.updated_at}}
                  )
      end
    end