aboutsummaryrefslogtreecommitdiff
path: root/src/db/schemas
diff options
context:
space:
mode:
authorMichael Powers <[email protected]>2019-09-12 16:12:22 -0400
committerMichael Powers <[email protected]>2019-09-12 16:12:22 -0400
commitf5f9861a78c1a4b6322e27739e7886d8d0f15759 (patch)
treed938e44eb9b946a52c8b0de549dcdc8fa33d286d /src/db/schemas
parentf9408a00c6dbbf28ac9b29b0e7ee8f04bc76925c (diff)
downloadvaultwarden-f5f9861a78c1a4b6322e27739e7886d8d0f15759.tar.gz
vaultwarden-f5f9861a78c1a4b6322e27739e7886d8d0f15759.zip
Adds support for PostgreSQL which resolves #87 and is mentioned in #246.
This includes migrations as well as Dockerfile's for amd64. The biggest change is that replace_into isn't supported by Diesel for the PostgreSQL backend, instead requiring the use of on_conflict. This unfortunately requires a branch for save() on all of the models currently using replace_into.
Diffstat (limited to 'src/db/schemas')
-rw-r--r--src/db/schemas/postgresql/schema.rs172
1 files changed, 172 insertions, 0 deletions
diff --git a/src/db/schemas/postgresql/schema.rs b/src/db/schemas/postgresql/schema.rs
new file mode 100644
index 00000000..1bc924c9
--- /dev/null
+++ b/src/db/schemas/postgresql/schema.rs
@@ -0,0 +1,172 @@
+table! {
+ attachments (id) {
+ id -> Text,
+ cipher_uuid -> Text,
+ file_name -> Text,
+ file_size -> Integer,
+ akey -> Nullable<Text>,
+ }
+}
+
+table! {
+ ciphers (uuid) {
+ uuid -> Text,
+ created_at -> Timestamp,
+ updated_at -> Timestamp,
+ user_uuid -> Nullable<Text>,
+ organization_uuid -> Nullable<Text>,
+ atype -> Integer,
+ name -> Text,
+ notes -> Nullable<Text>,
+ fields -> Nullable<Text>,
+ data -> Text,
+ favorite -> Bool,
+ password_history -> Nullable<Text>,
+ }
+}
+
+table! {
+ ciphers_collections (cipher_uuid, collection_uuid) {
+ cipher_uuid -> Text,
+ collection_uuid -> Text,
+ }
+}
+
+table! {
+ collections (uuid) {
+ uuid -> Text,
+ org_uuid -> Text,
+ name -> Text,
+ }
+}
+
+table! {
+ devices (uuid) {
+ uuid -> Text,
+ created_at -> Timestamp,
+ updated_at -> Timestamp,
+ user_uuid -> Text,
+ name -> Text,
+ atype -> Integer,
+ push_token -> Nullable<Text>,
+ refresh_token -> Text,
+ twofactor_remember -> Nullable<Text>,
+ }
+}
+
+table! {
+ folders (uuid) {
+ uuid -> Text,
+ created_at -> Timestamp,
+ updated_at -> Timestamp,
+ user_uuid -> Text,
+ name -> Text,
+ }
+}
+
+table! {
+ folders_ciphers (cipher_uuid, folder_uuid) {
+ cipher_uuid -> Text,
+ folder_uuid -> Text,
+ }
+}
+
+table! {
+ invitations (email) {
+ email -> Text,
+ }
+}
+
+table! {
+ organizations (uuid) {
+ uuid -> Text,
+ name -> Text,
+ billing_email -> Text,
+ }
+}
+
+table! {
+ twofactor (uuid) {
+ uuid -> Text,
+ user_uuid -> Text,
+ atype -> Integer,
+ enabled -> Bool,
+ data -> Text,
+ }
+}
+
+table! {
+ users (uuid) {
+ uuid -> Text,
+ created_at -> Timestamp,
+ updated_at -> Timestamp,
+ email -> Text,
+ name -> Text,
+ password_hash -> Binary,
+ salt -> Binary,
+ password_iterations -> Integer,
+ password_hint -> Nullable<Text>,
+ akey -> Text,
+ private_key -> Nullable<Text>,
+ public_key -> Nullable<Text>,
+ totp_secret -> Nullable<Text>,
+ totp_recover -> Nullable<Text>,
+ security_stamp -> Text,
+ equivalent_domains -> Text,
+ excluded_globals -> Text,
+ client_kdf_type -> Integer,
+ client_kdf_iter -> Integer,
+ }
+}
+
+table! {
+ users_collections (user_uuid, collection_uuid) {
+ user_uuid -> Text,
+ collection_uuid -> Text,
+ read_only -> Bool,
+ }
+}
+
+table! {
+ users_organizations (uuid) {
+ uuid -> Text,
+ user_uuid -> Text,
+ org_uuid -> Text,
+ access_all -> Bool,
+ akey -> Text,
+ status -> Integer,
+ atype -> Integer,
+ }
+}
+
+joinable!(attachments -> ciphers (cipher_uuid));
+joinable!(ciphers -> organizations (organization_uuid));
+joinable!(ciphers -> users (user_uuid));
+joinable!(ciphers_collections -> ciphers (cipher_uuid));
+joinable!(ciphers_collections -> collections (collection_uuid));
+joinable!(collections -> organizations (org_uuid));
+joinable!(devices -> users (user_uuid));
+joinable!(folders -> users (user_uuid));
+joinable!(folders_ciphers -> ciphers (cipher_uuid));
+joinable!(folders_ciphers -> folders (folder_uuid));
+joinable!(twofactor -> users (user_uuid));
+joinable!(users_collections -> collections (collection_uuid));
+joinable!(users_collections -> users (user_uuid));
+joinable!(users_organizations -> organizations (org_uuid));
+joinable!(users_organizations -> users (user_uuid));
+
+allow_tables_to_appear_in_same_query!(
+ attachments,
+ ciphers,
+ ciphers_collections,
+ collections,
+ devices,
+ folders,
+ folders_ciphers,
+ invitations,
+ organizations,
+ twofactor,
+ users,
+ users_collections,
+ users_organizations,
+); \ No newline at end of file