From 86025df1f6d814c98a14211ceb4da6cf6de915c7 Mon Sep 17 00:00:00 2001 From: Nathan Perry Date: Fri, 8 Mar 2019 16:57:27 -0500 Subject: first pass with oauth --- src/db/models.rs | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'src/db/models.rs') diff --git a/src/db/models.rs b/src/db/models.rs index 66e161a..030daba 100644 --- a/src/db/models.rs +++ b/src/db/models.rs @@ -284,3 +284,46 @@ impl InvocationRecord { .map_err(Error::from) } } + +#[derive(Queryable, Identifiable, PartialEq, Debug)] +#[table_name="google_oauth_tokens"] +pub struct GoogleOAuthToken { + pub id: i32, + pub token: String, + pub refresh_token: String, + pub expiration: NaiveDateTime, + pub created: NaiveDateTime, +} + +impl GoogleOAuthToken { + pub fn create(conn: &PgConnection, token: String, refresh_token: String, expiration: NaiveDateTime) -> Result { + ::diesel::insert_into(google_oauth_tokens::table) + .values(&NewGoogleOAuthToken { + token, + refresh_token, + expiration, + }) + .get_result::(conn) + .map_err(Error::from) + } + + pub fn latest(conn: &PgConnection) -> Result { + use chrono; + + let now = chrono::Utc::now().naive_utc(); + + google_oauth_tokens::table + .filter(google_oauth_tokens::expiration.gt(now)) + .order(google_oauth_tokens::created.desc()) + .first(conn) + .map_err(Error::from) + } +} + +#[derive(Insertable, PartialEq, Debug)] +#[table_name="google_oauth_tokens"] +pub struct NewGoogleOAuthToken { + pub token: String, + pub refresh_token: String, + pub expiration: NaiveDateTime, +} -- cgit v1.3.1