openauth_core/options/
session.rs1use std::collections::BTreeMap;
2
3use crate::db::{DbFieldType, DbValue};
4
5use super::cookies::CookieCacheOptions;
6
7#[derive(Debug, Clone, PartialEq, Default)]
9pub struct SessionOptions {
10 pub expires_in: Option<u64>,
11 pub update_age: Option<u64>,
12 pub fresh_age: Option<u64>,
13 pub cookie_cache: CookieCacheOptions,
14 pub additional_fields: BTreeMap<String, SessionAdditionalField>,
15}
16
17#[derive(Debug, Clone, PartialEq)]
19pub struct SessionAdditionalField {
20 pub field_type: DbFieldType,
21 pub required: bool,
22 pub input: bool,
23 pub returned: bool,
24 pub default_value: Option<DbValue>,
25 pub db_name: Option<String>,
26}
27
28impl SessionAdditionalField {
29 pub fn new(field_type: DbFieldType) -> Self {
30 Self {
31 field_type,
32 required: true,
33 input: true,
34 returned: true,
35 default_value: None,
36 db_name: None,
37 }
38 }
39
40 #[must_use]
41 pub fn optional(mut self) -> Self {
42 self.required = false;
43 self
44 }
45
46 #[must_use]
47 pub fn generated(mut self) -> Self {
48 self.input = false;
49 self
50 }
51
52 #[must_use]
53 pub fn hidden(mut self) -> Self {
54 self.returned = false;
55 self
56 }
57
58 #[must_use]
59 pub fn default_value(mut self, value: DbValue) -> Self {
60 self.default_value = Some(value);
61 self
62 }
63
64 #[must_use]
65 pub fn db_name(mut self, db_name: impl Into<String>) -> Self {
66 self.db_name = Some(db_name.into());
67 self
68 }
69}