diff options
| author | Nathan Perry <avaglir@gmail.com> | 2019-03-08 16:57:27 -0500 |
|---|---|---|
| committer | Nathan Perry <avaglir@gmail.com> | 2019-03-08 16:57:27 -0500 |
| commit | 86025df1f6d814c98a14211ceb4da6cf6de915c7 (patch) | |
| tree | c615b6634eea05498d772f68aec2d52fa3ca4f01 /src/db/models.rs | |
| parent | 24a7cb3c8eb0517b69c145170765c891a82ccc76 (diff) | |
first pass with oauth
Diffstat (limited to 'src/db/models.rs')
| -rw-r--r-- | src/db/models.rs | 43 |
1 files changed, 43 insertions, 0 deletions
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<Self> { + ::diesel::insert_into(google_oauth_tokens::table) + .values(&NewGoogleOAuthToken { + token, + refresh_token, + expiration, + }) + .get_result::<GoogleOAuthToken>(conn) + .map_err(Error::from) + } + + pub fn latest(conn: &PgConnection) -> Result<Self> { + 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, +} |
