diff options
author | Maksim <parallel588@gmail.com> | 2019-05-22 15:44:50 +0000 |
---|---|---|
committer | lambda <lain@soykaf.club> | 2019-05-22 15:44:50 +0000 |
commit | 620908a2db86942a00bc0ba9c71c037061e26967 (patch) | |
tree | 730de5f3c0837b7c5fb1572c13c2acc6235d102c /lib/pleroma/web/oauth/token/query.ex | |
parent | 714d8d4ef9c5e059e0ca7f1f55b48e343ced85f8 (diff) | |
download | pleroma-620908a2db86942a00bc0ba9c71c037061e26967.tar.gz |
[#699] add worker to clean expired oauth tokens
Diffstat (limited to 'lib/pleroma/web/oauth/token/query.ex')
-rw-r--r-- | lib/pleroma/web/oauth/token/query.ex | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/lib/pleroma/web/oauth/token/query.ex b/lib/pleroma/web/oauth/token/query.ex new file mode 100644 index 000000000..d92e1f071 --- /dev/null +++ b/lib/pleroma/web/oauth/token/query.ex @@ -0,0 +1,55 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.OAuth.Token.Query do + @moduledoc """ + Contains queries for OAuth Token. + """ + + import Ecto.Query, only: [from: 2] + + @type query :: Ecto.Queryable.t() | Token.t() + + alias Pleroma.Web.OAuth.Token + + @spec get_by_refresh_token(query, String.t()) :: query + def get_by_refresh_token(query \\ Token, refresh_token) do + from(q in query, where: q.refresh_token == ^refresh_token) + end + + @spec get_by_token(query, String.t()) :: query + def get_by_token(query \\ Token, token) do + from(q in query, where: q.token == ^token) + end + + @spec get_by_app(query, String.t()) :: query + def get_by_app(query \\ Token, app_id) do + from(q in query, where: q.app_id == ^app_id) + end + + @spec get_by_id(query, String.t()) :: query + def get_by_id(query \\ Token, id) do + from(q in query, where: q.id == ^id) + end + + @spec get_expired_tokens(query, DateTime.t() | nil) :: query + def get_expired_tokens(query \\ Token, date \\ nil) do + expired_date = date || Timex.now() + from(q in query, where: fragment("?", q.valid_until) < ^expired_date) + end + + @spec get_by_user(query, String.t()) :: query + def get_by_user(query \\ Token, user_id) do + from(q in query, where: q.user_id == ^user_id) + end + + @spec preload(query, any) :: query + def preload(query \\ Token, assoc_preload \\ []) + + def preload(query, assoc_preload) when is_list(assoc_preload) do + from(q in query, preload: ^assoc_preload) + end + + def preload(query, _assoc_preload), do: query +end |