committed by
GitHub
124 changed files with 1405 additions and 147 deletions
@ -0,0 +1,2 @@ |
|||
use flake . --show-trace |
|||
dotenv_if_exists .env |
@ -0,0 +1,56 @@ |
|||
[language-server] |
|||
nil = { command = "nil" } |
|||
taplo = { command = "taplo", args = ["lsp", "stdio"] } |
|||
yaml-language-server = { command = "yaml-language-server", args = ["--stdio"] } |
|||
marksman = { command = "marksman", args = ["server"] } |
|||
vscode-json-language-server = { command = "vscode-json-language-server", args = [ |
|||
"--stdio", |
|||
], config = { json = { validate = { enable = true } } } } |
|||
|
|||
[language-server.rust-analyzer] |
|||
command = "rust-analyzer" |
|||
|
|||
[language-server.rust-analyzer.config] |
|||
inlayHints.bindingModeHints.enable = false |
|||
inlayHints.closingBraceHints.minLines = 10 |
|||
inlayHints.closureReturnTypeHints.enable = "with_block" |
|||
inlayHints.discriminantHints.enable = "fieldless" |
|||
inlayHints.lifetimeElisionHints.enable = "skip_trivial" |
|||
inlayHints.typeHints.hideClosureInitialization = false |
|||
procMacro.enable = true |
|||
cargo.features = "rust-analyzer-stable" |
|||
check.features = "rust-analyzer-stable" |
|||
|
|||
[[language]] |
|||
name = "nix" |
|||
auto-format = true |
|||
formatter = { command = "nixpkgs-fmt" } |
|||
language-servers = ["nil"] |
|||
|
|||
[[language]] |
|||
name = "toml" |
|||
auto-format = true |
|||
language-servers = ["taplo"] |
|||
|
|||
[[language]] |
|||
name = "yaml" |
|||
auto-format = true |
|||
formatter = { command = "prettier", args = ["--parser", "yaml"] } |
|||
language-servers = ["yaml-language-server"] |
|||
|
|||
[[language]] |
|||
name = "json" |
|||
auto-format = true |
|||
formatter = { command = "prettier", args = ["--parser", "json"] } |
|||
language-servers = ["vscode-json-language-server"] |
|||
|
|||
[[language]] |
|||
name = "markdown" |
|||
auto-format = true |
|||
formatter = { command = "prettier", args = ["--parser", "markdown"] } |
|||
language-servers = ["marksman"] |
|||
|
|||
[[language]] |
|||
name = "rust" |
|||
auto-format = true |
|||
language-servers = ["rust-analyzer"] |
@ -1,52 +1,64 @@ |
|||
--- |
|||
repos: |
|||
- repo: https://github.com/pre-commit/pre-commit-hooks |
|||
- repo: https://github.com/pre-commit/pre-commit-hooks |
|||
rev: v6.0.0 |
|||
hooks: |
|||
- id: check-yaml |
|||
- id: check-json |
|||
- id: check-toml |
|||
- id: mixed-line-ending |
|||
args: ["--fix=no"] |
|||
- id: end-of-file-fixer |
|||
exclude: "(.*js$|.*css$)" |
|||
- id: check-case-conflict |
|||
- id: check-merge-conflict |
|||
- id: detect-private-key |
|||
- id: check-symlinks |
|||
- id: forbid-submodules |
|||
- repo: local |
|||
- id: check-yaml |
|||
- id: check-json |
|||
- id: check-toml |
|||
- id: mixed-line-ending |
|||
args: ["--fix=no"] |
|||
- id: end-of-file-fixer |
|||
exclude: "(.*js$|.*css$)" |
|||
- id: check-case-conflict |
|||
- id: check-merge-conflict |
|||
- id: detect-private-key |
|||
- id: check-symlinks |
|||
- id: forbid-submodules |
|||
- repo: local |
|||
hooks: |
|||
- id: fmt |
|||
name: fmt |
|||
description: Format files with cargo fmt. |
|||
entry: cargo fmt |
|||
language: system |
|||
types: [rust] |
|||
args: ["--", "--check"] |
|||
- id: cargo-test |
|||
name: cargo test |
|||
description: Test the package for errors. |
|||
entry: cargo test |
|||
language: system |
|||
args: ["--features", "sqlite,mysql,postgresql,enable_mimalloc", "--"] |
|||
types_or: [rust, file] |
|||
files: (Cargo.toml|Cargo.lock|rust-toolchain.toml|rustfmt.toml|.*\.rs$) |
|||
pass_filenames: false |
|||
- id: cargo-clippy |
|||
name: cargo clippy |
|||
description: Lint Rust sources |
|||
entry: cargo clippy |
|||
language: system |
|||
args: ["--features", "sqlite,mysql,postgresql,enable_mimalloc", "--", "-D", "warnings"] |
|||
types_or: [rust, file] |
|||
files: (Cargo.toml|Cargo.lock|rust-toolchain.toml|rustfmt.toml|.*\.rs$) |
|||
pass_filenames: false |
|||
- id: check-docker-templates |
|||
name: check docker templates |
|||
description: Check if the Docker templates are updated |
|||
language: system |
|||
entry: sh |
|||
args: |
|||
- "-c" |
|||
- "cd docker && make" |
|||
- id: fmt |
|||
name: fmt |
|||
description: Format files with cargo fmt. |
|||
entry: cargo fmt |
|||
language: system |
|||
types: [rust] |
|||
args: ["--", "--check"] |
|||
- id: cargo-test |
|||
name: cargo test |
|||
description: Test the package for errors. |
|||
entry: cargo test |
|||
language: system |
|||
args: |
|||
[ |
|||
"--features", |
|||
"sqlite,mysql,postgresql,cockroachdb,enable_mimalloc", |
|||
"--", |
|||
] |
|||
types_or: [rust, file] |
|||
files: (Cargo.toml|Cargo.lock|rust-toolchain.toml|rustfmt.toml|.*\.rs$) |
|||
pass_filenames: false |
|||
- id: cargo-clippy |
|||
name: cargo clippy |
|||
description: Lint Rust sources |
|||
entry: cargo clippy |
|||
language: system |
|||
args: |
|||
[ |
|||
"--features", |
|||
"sqlite,mysql,postgresql,cockroachdb,enable_mimalloc", |
|||
"--", |
|||
"-D", |
|||
"warnings", |
|||
] |
|||
types_or: [rust, file] |
|||
files: (Cargo.toml|Cargo.lock|rust-toolchain.toml|rustfmt.toml|.*\.rs$) |
|||
pass_filenames: false |
|||
- id: check-docker-templates |
|||
name: check docker templates |
|||
description: Check if the Docker templates are updated |
|||
language: system |
|||
entry: sh |
|||
args: |
|||
- "-c" |
|||
- "cd docker && make" |
|||
|
@ -0,0 +1,60 @@ |
|||
{ |
|||
"nodes": { |
|||
"nixpkgs": { |
|||
"locked": { |
|||
"lastModified": 1757746433, |
|||
"narHash": "sha256-fEvTiU4s9lWgW7mYEU/1QUPirgkn+odUBTaindgiziY=", |
|||
"owner": "NixOS", |
|||
"repo": "nixpkgs", |
|||
"rev": "6d7ec06d6868ac6d94c371458fc2391ded9ff13d", |
|||
"type": "github" |
|||
}, |
|||
"original": { |
|||
"id": "nixpkgs", |
|||
"ref": "nixpkgs-unstable", |
|||
"type": "indirect" |
|||
} |
|||
}, |
|||
"root": { |
|||
"inputs": { |
|||
"nixpkgs": "nixpkgs", |
|||
"utils": "utils" |
|||
} |
|||
}, |
|||
"systems": { |
|||
"locked": { |
|||
"lastModified": 1681028828, |
|||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", |
|||
"owner": "nix-systems", |
|||
"repo": "default", |
|||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", |
|||
"type": "github" |
|||
}, |
|||
"original": { |
|||
"owner": "nix-systems", |
|||
"repo": "default", |
|||
"type": "github" |
|||
} |
|||
}, |
|||
"utils": { |
|||
"inputs": { |
|||
"systems": "systems" |
|||
}, |
|||
"locked": { |
|||
"lastModified": 1731533236, |
|||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", |
|||
"owner": "numtide", |
|||
"repo": "flake-utils", |
|||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", |
|||
"type": "github" |
|||
}, |
|||
"original": { |
|||
"owner": "numtide", |
|||
"repo": "flake-utils", |
|||
"type": "github" |
|||
} |
|||
} |
|||
}, |
|||
"root": "root", |
|||
"version": 7 |
|||
} |
@ -0,0 +1,55 @@ |
|||
{ |
|||
inputs = { |
|||
nixpkgs.url = "nixpkgs/nixpkgs-unstable"; |
|||
utils.url = "github:numtide/flake-utils"; |
|||
}; |
|||
|
|||
outputs = |
|||
{ |
|||
self, |
|||
nixpkgs, |
|||
utils, |
|||
}: |
|||
utils.lib.eachDefaultSystem ( |
|||
system: |
|||
let |
|||
pkgs = import nixpkgs.outPath { |
|||
inherit system; |
|||
}; |
|||
in |
|||
{ |
|||
devShells.default = pkgs.mkShell rec { |
|||
RUST_BACKTRACE = "full"; |
|||
LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath buildInputs}"; |
|||
|
|||
buildInputs = with pkgs; [ |
|||
pkg-config |
|||
openssl |
|||
libpq |
|||
libmysqlclient |
|||
]; |
|||
|
|||
packages = with pkgs; [ |
|||
git |
|||
|
|||
nil |
|||
nixfmt-rfc-style |
|||
|
|||
rustc |
|||
cargo |
|||
clippy |
|||
rustfmt |
|||
rust-analyzer |
|||
|
|||
nodePackages.prettier |
|||
nodePackages.yaml-language-server |
|||
nodePackages.vscode-langservers-extracted |
|||
markdownlint-cli |
|||
nodePackages.markdown-link-check |
|||
marksman |
|||
taplo |
|||
]; |
|||
}; |
|||
} |
|||
); |
|||
} |
@ -0,0 +1,13 @@ |
|||
DROP TABLE devices; |
|||
DROP TABLE attachments; |
|||
DROP TABLE users_collections; |
|||
DROP TABLE users_organizations; |
|||
DROP TABLE folders_ciphers; |
|||
DROP TABLE ciphers_collections; |
|||
DROP TABLE twofactor; |
|||
DROP TABLE invitations; |
|||
DROP TABLE collections; |
|||
DROP TABLE folders; |
|||
DROP TABLE ciphers; |
|||
DROP TABLE users; |
|||
DROP TABLE organizations; |
@ -0,0 +1,121 @@ |
|||
CREATE TABLE users ( |
|||
uuid CHAR(36) NOT NULL PRIMARY KEY, |
|||
created_at TIMESTAMP NOT NULL, |
|||
updated_at TIMESTAMP NOT NULL, |
|||
email VARCHAR(255) NOT NULL UNIQUE, |
|||
name TEXT NOT NULL, |
|||
password_hash BYTEA NOT NULL, |
|||
salt BYTEA NOT NULL, |
|||
password_iterations INT4 NOT NULL, |
|||
password_hint TEXT, |
|||
akey TEXT NOT NULL, |
|||
private_key TEXT, |
|||
public_key TEXT, |
|||
totp_secret TEXT, |
|||
totp_recover TEXT, |
|||
security_stamp TEXT NOT NULL, |
|||
equivalent_domains TEXT NOT NULL, |
|||
excluded_globals TEXT NOT NULL, |
|||
client_kdf_type INT4 NOT NULL DEFAULT 0, |
|||
client_kdf_iter INT4 NOT NULL DEFAULT 100000 |
|||
); |
|||
|
|||
CREATE TABLE devices ( |
|||
uuid CHAR(36) NOT NULL PRIMARY KEY, |
|||
created_at TIMESTAMP NOT NULL, |
|||
updated_at TIMESTAMP NOT NULL, |
|||
user_uuid CHAR(36) NOT NULL REFERENCES users (uuid), |
|||
name TEXT NOT NULL, |
|||
atype INT4 NOT NULL, |
|||
push_token TEXT, |
|||
refresh_token TEXT NOT NULL, |
|||
twofactor_remember TEXT |
|||
); |
|||
|
|||
CREATE TABLE organizations ( |
|||
uuid VARCHAR(40) NOT NULL PRIMARY KEY, |
|||
name TEXT NOT NULL, |
|||
billing_email TEXT NOT NULL |
|||
); |
|||
|
|||
CREATE TABLE ciphers ( |
|||
uuid CHAR(36) NOT NULL PRIMARY KEY, |
|||
created_at TIMESTAMP NOT NULL, |
|||
updated_at TIMESTAMP NOT NULL, |
|||
user_uuid CHAR(36) REFERENCES users (uuid), |
|||
organization_uuid CHAR(36) REFERENCES organizations (uuid), |
|||
atype INT4 NOT NULL, |
|||
name TEXT NOT NULL, |
|||
notes TEXT, |
|||
fields TEXT, |
|||
data TEXT NOT NULL, |
|||
favorite BOOLEAN NOT NULL, |
|||
password_history TEXT |
|||
); |
|||
|
|||
CREATE TABLE attachments ( |
|||
id CHAR(36) NOT NULL PRIMARY KEY, |
|||
cipher_uuid CHAR(36) NOT NULL REFERENCES ciphers (uuid), |
|||
file_name TEXT NOT NULL, |
|||
file_size INT4 NOT NULL, |
|||
akey TEXT |
|||
); |
|||
|
|||
CREATE TABLE folders ( |
|||
uuid CHAR(36) NOT NULL PRIMARY KEY, |
|||
created_at TIMESTAMP NOT NULL, |
|||
updated_at TIMESTAMP NOT NULL, |
|||
user_uuid CHAR(36) NOT NULL REFERENCES users (uuid), |
|||
name TEXT NOT NULL |
|||
); |
|||
|
|||
CREATE TABLE collections ( |
|||
uuid VARCHAR(40) NOT NULL PRIMARY KEY, |
|||
org_uuid VARCHAR(40) NOT NULL REFERENCES organizations (uuid), |
|||
name TEXT NOT NULL |
|||
); |
|||
|
|||
CREATE TABLE users_collections ( |
|||
user_uuid CHAR(36) NOT NULL REFERENCES users (uuid), |
|||
collection_uuid CHAR(36) NOT NULL REFERENCES collections (uuid), |
|||
read_only BOOLEAN NOT NULL DEFAULT false, |
|||
PRIMARY KEY (user_uuid, collection_uuid) |
|||
); |
|||
|
|||
CREATE TABLE users_organizations ( |
|||
uuid CHAR(36) NOT NULL PRIMARY KEY, |
|||
user_uuid CHAR(36) NOT NULL REFERENCES users (uuid), |
|||
org_uuid CHAR(36) NOT NULL REFERENCES organizations (uuid), |
|||
|
|||
access_all BOOLEAN NOT NULL, |
|||
akey TEXT NOT NULL, |
|||
status INT4 NOT NULL, |
|||
atype INT4 NOT NULL, |
|||
|
|||
UNIQUE (user_uuid, org_uuid) |
|||
); |
|||
|
|||
CREATE TABLE folders_ciphers ( |
|||
cipher_uuid CHAR(36) NOT NULL REFERENCES ciphers (uuid), |
|||
folder_uuid CHAR(36) NOT NULL REFERENCES folders (uuid), |
|||
PRIMARY KEY (cipher_uuid, folder_uuid) |
|||
); |
|||
|
|||
CREATE TABLE ciphers_collections ( |
|||
cipher_uuid CHAR(36) NOT NULL REFERENCES ciphers (uuid), |
|||
collection_uuid CHAR(36) NOT NULL REFERENCES collections (uuid), |
|||
PRIMARY KEY (cipher_uuid, collection_uuid) |
|||
); |
|||
|
|||
CREATE TABLE twofactor ( |
|||
uuid CHAR(36) NOT NULL PRIMARY KEY, |
|||
user_uuid CHAR(36) NOT NULL REFERENCES users (uuid), |
|||
atype INT4 NOT NULL, |
|||
enabled BOOLEAN NOT NULL, |
|||
data TEXT NOT NULL, |
|||
UNIQUE (user_uuid, atype) |
|||
); |
|||
|
|||
CREATE TABLE invitations ( |
|||
email VARCHAR(255) NOT NULL PRIMARY KEY |
|||
); |
@ -0,0 +1,26 @@ |
|||
ALTER TABLE attachments ALTER COLUMN id TYPE CHAR(36); |
|||
ALTER TABLE attachments ALTER COLUMN cipher_uuid TYPE CHAR(36); |
|||
ALTER TABLE users ALTER COLUMN uuid TYPE CHAR(36); |
|||
ALTER TABLE users ALTER COLUMN email TYPE VARCHAR(255); |
|||
ALTER TABLE devices ALTER COLUMN uuid TYPE CHAR(36); |
|||
ALTER TABLE devices ALTER COLUMN user_uuid TYPE CHAR(36); |
|||
ALTER TABLE organizations ALTER COLUMN uuid TYPE CHAR(40); |
|||
ALTER TABLE ciphers ALTER COLUMN uuid TYPE CHAR(36); |
|||
ALTER TABLE ciphers ALTER COLUMN user_uuid TYPE CHAR(36); |
|||
ALTER TABLE ciphers ALTER COLUMN organization_uuid TYPE CHAR(36); |
|||
ALTER TABLE folders ALTER COLUMN uuid TYPE CHAR(36); |
|||
ALTER TABLE folders ALTER COLUMN user_uuid TYPE CHAR(36); |
|||
ALTER TABLE collections ALTER COLUMN uuid TYPE CHAR(40); |
|||
ALTER TABLE collections ALTER COLUMN org_uuid TYPE CHAR(40); |
|||
ALTER TABLE users_collections ALTER COLUMN user_uuid TYPE CHAR(36); |
|||
ALTER TABLE users_collections ALTER COLUMN collection_uuid TYPE CHAR(36); |
|||
ALTER TABLE users_organizations ALTER COLUMN uuid TYPE CHAR(36); |
|||
ALTER TABLE users_organizations ALTER COLUMN user_uuid TYPE CHAR(36); |
|||
ALTER TABLE users_organizations ALTER COLUMN org_uuid TYPE CHAR(36); |
|||
ALTER TABLE folders_ciphers ALTER COLUMN cipher_uuid TYPE CHAR(36); |
|||
ALTER TABLE folders_ciphers ALTER COLUMN folder_uuid TYPE CHAR(36); |
|||
ALTER TABLE ciphers_collections ALTER COLUMN cipher_uuid TYPE CHAR(36); |
|||
ALTER TABLE ciphers_collections ALTER COLUMN collection_uuid TYPE CHAR(36); |
|||
ALTER TABLE twofactor ALTER COLUMN uuid TYPE CHAR(36); |
|||
ALTER TABLE twofactor ALTER COLUMN user_uuid TYPE CHAR(36); |
|||
ALTER TABLE invitations ALTER COLUMN email TYPE VARCHAR(255); |
@ -0,0 +1,27 @@ |
|||
-- Switch from CHAR() types to VARCHAR() types to avoid padding issues. |
|||
ALTER TABLE attachments ALTER COLUMN id TYPE TEXT; |
|||
ALTER TABLE attachments ALTER COLUMN cipher_uuid TYPE VARCHAR(40); |
|||
ALTER TABLE users ALTER COLUMN uuid TYPE VARCHAR(40); |
|||
ALTER TABLE users ALTER COLUMN email TYPE TEXT; |
|||
ALTER TABLE devices ALTER COLUMN uuid TYPE VARCHAR(40); |
|||
ALTER TABLE devices ALTER COLUMN user_uuid TYPE VARCHAR(40); |
|||
ALTER TABLE organizations ALTER COLUMN uuid TYPE VARCHAR(40); |
|||
ALTER TABLE ciphers ALTER COLUMN uuid TYPE VARCHAR(40); |
|||
ALTER TABLE ciphers ALTER COLUMN user_uuid TYPE VARCHAR(40); |
|||
ALTER TABLE ciphers ALTER COLUMN organization_uuid TYPE VARCHAR(40); |
|||
ALTER TABLE folders ALTER COLUMN uuid TYPE VARCHAR(40); |
|||
ALTER TABLE folders ALTER COLUMN user_uuid TYPE VARCHAR(40); |
|||
ALTER TABLE collections ALTER COLUMN uuid TYPE VARCHAR(40); |
|||
ALTER TABLE collections ALTER COLUMN org_uuid TYPE VARCHAR(40); |
|||
ALTER TABLE users_collections ALTER COLUMN user_uuid TYPE VARCHAR(40); |
|||
ALTER TABLE users_collections ALTER COLUMN collection_uuid TYPE VARCHAR(40); |
|||
ALTER TABLE users_organizations ALTER COLUMN uuid TYPE VARCHAR(40); |
|||
ALTER TABLE users_organizations ALTER COLUMN user_uuid TYPE VARCHAR(40); |
|||
ALTER TABLE users_organizations ALTER COLUMN org_uuid TYPE VARCHAR(40); |
|||
ALTER TABLE folders_ciphers ALTER COLUMN cipher_uuid TYPE VARCHAR(40); |
|||
ALTER TABLE folders_ciphers ALTER COLUMN folder_uuid TYPE VARCHAR(40); |
|||
ALTER TABLE ciphers_collections ALTER COLUMN cipher_uuid TYPE VARCHAR(40); |
|||
ALTER TABLE ciphers_collections ALTER COLUMN collection_uuid TYPE VARCHAR(40); |
|||
ALTER TABLE twofactor ALTER COLUMN uuid TYPE VARCHAR(40); |
|||
ALTER TABLE twofactor ALTER COLUMN user_uuid TYPE VARCHAR(40); |
|||
ALTER TABLE invitations ALTER COLUMN email TYPE TEXT; |
@ -0,0 +1 @@ |
|||
ALTER TABLE twofactor ADD COLUMN last_used INT4 NOT NULL DEFAULT 0; |
@ -0,0 +1 @@ |
|||
|
@ -0,0 +1,5 @@ |
|||
ALTER TABLE users ADD COLUMN verified_at TIMESTAMP DEFAULT NULL; |
|||
ALTER TABLE users ADD COLUMN last_verifying_at TIMESTAMP DEFAULT NULL; |
|||
ALTER TABLE users ADD COLUMN login_verify_count INT4 NOT NULL DEFAULT 0; |
|||
ALTER TABLE users ADD COLUMN email_new VARCHAR(255) DEFAULT NULL; |
|||
ALTER TABLE users ADD COLUMN email_new_token VARCHAR(16) DEFAULT NULL; |
@ -0,0 +1 @@ |
|||
DROP TABLE org_policies; |
@ -0,0 +1,9 @@ |
|||
CREATE TABLE org_policies ( |
|||
uuid CHAR(36) NOT NULL PRIMARY KEY, |
|||
org_uuid CHAR(36) NOT NULL REFERENCES organizations (uuid), |
|||
atype INT4 NOT NULL, |
|||
enabled BOOLEAN NOT NULL, |
|||
data TEXT NOT NULL, |
|||
|
|||
UNIQUE (org_uuid, atype) |
|||
); |
@ -0,0 +1 @@ |
|||
|
@ -0,0 +1,3 @@ |
|||
ALTER TABLE ciphers |
|||
ADD COLUMN |
|||
deleted_at TIMESTAMP; |
@ -0,0 +1,2 @@ |
|||
ALTER TABLE users_collections |
|||
ADD COLUMN hide_passwords BOOLEAN NOT NULL DEFAULT FALSE; |
@ -0,0 +1 @@ |
|||
DROP TABLE favorites; |
@ -0,0 +1,6 @@ |
|||
CREATE TABLE favorites ( |
|||
user_uuid VARCHAR(40) NOT NULL REFERENCES users(uuid), |
|||
cipher_uuid VARCHAR(40) NOT NULL REFERENCES ciphers(uuid), |
|||
|
|||
PRIMARY KEY (user_uuid, cipher_uuid) |
|||
); |
@ -0,0 +1,11 @@ |
|||
ALTER TABLE ciphers |
|||
ADD COLUMN favorite BOOLEAN NOT NULL DEFAULT FALSE; |
|||
|
|||
-- Transfer favorite status for user-owned ciphers. |
|||
UPDATE ciphers |
|||
SET favorite = TRUE |
|||
WHERE EXISTS ( |
|||
SELECT * FROM favorites |
|||
WHERE favorites.user_uuid = ciphers.user_uuid |
|||
AND favorites.cipher_uuid = ciphers.uuid |
|||
); |
@ -0,0 +1,9 @@ |
|||
-- Transfer favorite status for user-owned ciphers. |
|||
INSERT INTO favorites(user_uuid, cipher_uuid) |
|||
SELECT user_uuid, uuid |
|||
FROM ciphers |
|||
WHERE favorite = TRUE |
|||
AND user_uuid IS NOT NULL; |
|||
|
|||
ALTER TABLE ciphers |
|||
DROP COLUMN favorite; |
@ -0,0 +1 @@ |
|||
ALTER TABLE users ADD COLUMN enabled BOOLEAN NOT NULL DEFAULT true; |
@ -0,0 +1 @@ |
|||
ALTER TABLE users ADD COLUMN stamp_exception TEXT DEFAULT NULL; |
@ -0,0 +1 @@ |
|||
DROP TABLE sends; |
@ -0,0 +1,25 @@ |
|||
CREATE TABLE sends ( |
|||
uuid CHAR(36) NOT NULL PRIMARY KEY, |
|||
user_uuid CHAR(36) REFERENCES users (uuid), |
|||
organization_uuid CHAR(36) REFERENCES organizations (uuid), |
|||
|
|||
name TEXT NOT NULL, |
|||
notes TEXT, |
|||
|
|||
atype INT4 NOT NULL, |
|||
data TEXT NOT NULL, |
|||
key TEXT NOT NULL, |
|||
password_hash BYTEA, |
|||
password_salt BYTEA, |
|||
password_iter INT4, |
|||
|
|||
max_access_count INT4, |
|||
access_count INT4 NOT NULL, |
|||
|
|||
creation_date TIMESTAMP NOT NULL, |
|||
revision_date TIMESTAMP NOT NULL, |
|||
expiration_date TIMESTAMP, |
|||
deletion_date TIMESTAMP NOT NULL, |
|||
|
|||
disabled BOOLEAN NOT NULL |
|||
); |
@ -0,0 +1 @@ |
|||
ALTER TABLE sends RENAME COLUMN key TO akey; |
@ -0,0 +1,2 @@ |
|||
ALTER TABLE ciphers |
|||
ADD COLUMN reprompt INT4; |
@ -0,0 +1,2 @@ |
|||
ALTER TABLE sends |
|||
ADD COLUMN hide_email BOOLEAN; |
@ -0,0 +1,5 @@ |
|||
ALTER TABLE organizations |
|||
ADD COLUMN private_key TEXT; |
|||
|
|||
ALTER TABLE organizations |
|||
ADD COLUMN public_key TEXT; |
@ -0,0 +1 @@ |
|||
DROP TABLE emergency_access; |
@ -0,0 +1,14 @@ |
|||
CREATE TABLE emergency_access ( |
|||
uuid CHAR(36) NOT NULL PRIMARY KEY, |
|||
grantor_uuid CHAR(36) REFERENCES users (uuid), |
|||
grantee_uuid CHAR(36) REFERENCES users (uuid), |
|||
email VARCHAR(255), |
|||
key_encrypted TEXT, |
|||
atype INT4 NOT NULL, |
|||
status INT4 NOT NULL, |
|||
wait_time_days INT4 NOT NULL, |
|||
recovery_initiated_at TIMESTAMP, |
|||
last_notification_at TIMESTAMP, |
|||
updated_at TIMESTAMP NOT NULL, |
|||
created_at TIMESTAMP NOT NULL |
|||
); |
@ -0,0 +1 @@ |
|||
DROP TABLE twofactor_incomplete; |
@ -0,0 +1,9 @@ |
|||
CREATE TABLE twofactor_incomplete ( |
|||
user_uuid VARCHAR(40) NOT NULL REFERENCES users(uuid), |
|||
device_uuid VARCHAR(40) NOT NULL, |
|||
device_name TEXT NOT NULL, |
|||
login_time TIMESTAMP NOT NULL, |
|||
ip_address TEXT NOT NULL, |
|||
|
|||
PRIMARY KEY (user_uuid, device_uuid) |
|||
); |
@ -0,0 +1,2 @@ |
|||
ALTER TABLE users |
|||
ADD COLUMN api_key TEXT; |
@ -0,0 +1,4 @@ |
|||
-- First remove the previous primary key |
|||
ALTER TABLE devices DROP CONSTRAINT devices_pkey; |
|||
-- Add a new combined one |
|||
ALTER TABLE devices ADD PRIMARY KEY (uuid, user_uuid); |
@ -0,0 +1,3 @@ |
|||
DROP TABLE groups; |
|||
DROP TABLE groups_users; |
|||
DROP TABLE collections_groups; |
@ -0,0 +1,23 @@ |
|||
CREATE TABLE groups ( |
|||
uuid CHAR(36) NOT NULL PRIMARY KEY, |
|||
organizations_uuid VARCHAR(40) NOT NULL REFERENCES organizations (uuid), |
|||
name VARCHAR(100) NOT NULL, |
|||
access_all BOOLEAN NOT NULL, |
|||
external_id VARCHAR(300) NULL, |
|||
creation_date TIMESTAMP NOT NULL, |
|||
revision_date TIMESTAMP NOT NULL |
|||
); |
|||
|
|||
CREATE TABLE groups_users ( |
|||
groups_uuid CHAR(36) NOT NULL REFERENCES groups (uuid), |
|||
users_organizations_uuid VARCHAR(36) NOT NULL REFERENCES users_organizations (uuid), |
|||
PRIMARY KEY (groups_uuid, users_organizations_uuid) |
|||
); |
|||
|
|||
CREATE TABLE collections_groups ( |
|||
collections_uuid VARCHAR(40) NOT NULL REFERENCES collections (uuid), |
|||
groups_uuid CHAR(36) NOT NULL REFERENCES groups (uuid), |
|||
read_only BOOLEAN NOT NULL, |
|||
hide_passwords BOOLEAN NOT NULL, |
|||
PRIMARY KEY (collections_uuid, groups_uuid) |
|||
); |
@ -0,0 +1 @@ |
|||
DROP TABLE event; |
@ -0,0 +1,19 @@ |
|||
CREATE TABLE event ( |
|||
uuid CHAR(36) NOT NULL PRIMARY KEY, |
|||
event_type INT4 NOT NULL, |
|||
user_uuid CHAR(36), |
|||
org_uuid CHAR(36), |
|||
cipher_uuid CHAR(36), |
|||
collection_uuid CHAR(36), |
|||
group_uuid CHAR(36), |
|||
org_user_uuid CHAR(36), |
|||
act_user_uuid CHAR(36), |
|||
device_type INT4, |
|||
ip_address TEXT, |
|||
event_date TIMESTAMP NOT NULL, |
|||
policy_uuid CHAR(36), |
|||
provider_uuid CHAR(36), |
|||
provider_user_uuid CHAR(36), |
|||
provider_org_uuid CHAR(36), |
|||
UNIQUE (uuid) |
|||
); |
@ -0,0 +1,2 @@ |
|||
ALTER TABLE users_organizations |
|||
ADD COLUMN reset_password_key TEXT; |
@ -0,0 +1,2 @@ |
|||
ALTER TABLE users |
|||
ADD COLUMN avatar_color TEXT; |
@ -0,0 +1,7 @@ |
|||
ALTER TABLE users |
|||
ADD COLUMN |
|||
client_kdf_memory INT4 DEFAULT NULL; |
|||
|
|||
ALTER TABLE users |
|||
ADD COLUMN |
|||
client_kdf_parallelism INT4 DEFAULT NULL; |
@ -0,0 +1 @@ |
|||
ALTER TABLE devices ADD COLUMN push_uuid TEXT; |
@ -0,0 +1,10 @@ |
|||
CREATE TABLE organization_api_key ( |
|||
uuid CHAR(36) NOT NULL, |
|||
org_uuid CHAR(36) NOT NULL REFERENCES organizations(uuid), |
|||
atype INT4 NOT NULL, |
|||
api_key VARCHAR(255), |
|||
revision_date TIMESTAMP NOT NULL, |
|||
PRIMARY KEY(uuid, org_uuid) |
|||
); |
|||
|
|||
ALTER TABLE users ADD COLUMN external_id TEXT; |
@ -0,0 +1,19 @@ |
|||
CREATE TABLE auth_requests ( |
|||
uuid CHAR(36) NOT NULL PRIMARY KEY, |
|||
user_uuid CHAR(36) NOT NULL, |
|||
organization_uuid CHAR(36), |
|||
request_device_identifier CHAR(36) NOT NULL, |
|||
device_type INT4 NOT NULL, |
|||
request_ip TEXT NOT NULL, |
|||
response_device_id CHAR(36), |
|||
access_code TEXT NOT NULL, |
|||
public_key TEXT NOT NULL, |
|||
enc_key TEXT NOT NULL, |
|||
master_password_hash TEXT NOT NULL, |
|||
approved BOOLEAN, |
|||
creation_date TIMESTAMP NOT NULL, |
|||
response_date TIMESTAMP, |
|||
authentication_date TIMESTAMP, |
|||
FOREIGN KEY(user_uuid) REFERENCES users(uuid), |
|||
FOREIGN KEY(organization_uuid) REFERENCES organizations(uuid) |
|||
); |
@ -0,0 +1 @@ |
|||
ALTER TABLE collections ADD COLUMN external_id TEXT; |
@ -0,0 +1,5 @@ |
|||
ALTER TABLE auth_requests |
|||
ALTER COLUMN master_password_hash DROP NOT NULL; |
|||
|
|||
ALTER TABLE auth_requests |
|||
ALTER COLUMN enc_key DROP NOT NULL; |
@ -0,0 +1,2 @@ |
|||
ALTER TABLE users_organizations |
|||
ADD COLUMN external_id TEXT; |
@ -0,0 +1 @@ |
|||
DROP TABLE sso_nonce; |
@ -0,0 +1,4 @@ |
|||
CREATE TABLE sso_nonce ( |
|||
nonce CHAR(36) NOT NULL PRIMARY KEY, |
|||
created_at TIMESTAMP NOT NULL DEFAULT now() |
|||
); |
@ -0,0 +1 @@ |
|||
ALTER TABLE users_organizations DROP COLUMN invited_by_email; |
@ -0,0 +1 @@ |
|||
ALTER TABLE users_organizations ADD COLUMN invited_by_email TEXT DEFAULT NULL; |
@ -0,0 +1,2 @@ |
|||
ALTER TABLE ciphers |
|||
ADD COLUMN "key" TEXT; |
@ -0,0 +1,3 @@ |
|||
ALTER TABLE attachments |
|||
ALTER COLUMN file_size TYPE BIGINT, |
|||
ALTER COLUMN file_size SET NOT NULL; |
@ -0,0 +1,3 @@ |
|||
ALTER TABLE twofactor |
|||
ALTER COLUMN last_used TYPE BIGINT, |
|||
ALTER COLUMN last_used SET NOT NULL; |
@ -0,0 +1,6 @@ |
|||
DROP TABLE sso_nonce; |
|||
|
|||
CREATE TABLE sso_nonce ( |
|||
nonce CHAR(36) NOT NULL PRIMARY KEY, |
|||
created_at TIMESTAMP NOT NULL DEFAULT now() |
|||
); |
@ -0,0 +1,8 @@ |
|||
DROP TABLE sso_nonce; |
|||
|
|||
CREATE TABLE sso_nonce ( |
|||
state TEXT NOT NULL PRIMARY KEY, |
|||
nonce TEXT NOT NULL, |
|||
redirect_uri TEXT NOT NULL, |
|||
created_at TIMESTAMP NOT NULL DEFAULT now() |
|||
); |
@ -0,0 +1,8 @@ |
|||
DROP TABLE IF EXISTS sso_nonce; |
|||
|
|||
CREATE TABLE sso_nonce ( |
|||
state TEXT NOT NULL PRIMARY KEY, |
|||
nonce TEXT NOT NULL, |
|||
redirect_uri TEXT NOT NULL, |
|||
created_at TIMESTAMP NOT NULL DEFAULT now() |
|||
); |
@ -0,0 +1,9 @@ |
|||
DROP TABLE IF EXISTS sso_nonce; |
|||
|
|||
CREATE TABLE sso_nonce ( |
|||
state TEXT NOT NULL PRIMARY KEY, |
|||
nonce TEXT NOT NULL, |
|||
verifier TEXT, |
|||
redirect_uri TEXT NOT NULL, |
|||
created_at TIMESTAMP NOT NULL DEFAULT now() |
|||
); |
@ -0,0 +1 @@ |
|||
DROP TABLE IF EXISTS sso_users; |
@ -0,0 +1,7 @@ |
|||
CREATE TABLE sso_users ( |
|||
user_uuid CHAR(36) NOT NULL PRIMARY KEY, |
|||
identifier TEXT NOT NULL UNIQUE, |
|||
created_at TIMESTAMP NOT NULL DEFAULT now(), |
|||
|
|||
FOREIGN KEY(user_uuid) REFERENCES users(uuid) |
|||
); |
@ -0,0 +1,3 @@ |
|||
ALTER TABLE sso_users |
|||
DROP CONSTRAINT "sso_users_user_uuid_fkey", |
|||
ADD CONSTRAINT "sso_users_user_uuid_fkey" FOREIGN KEY(user_uuid) REFERENCES users(uuid) ON UPDATE CASCADE ON DELETE CASCADE; |
@ -0,0 +1 @@ |
|||
DROP TABLE twofactor_duo_ctx; |
@ -0,0 +1,8 @@ |
|||
CREATE TABLE twofactor_duo_ctx ( |
|||
state VARCHAR(64) NOT NULL, |
|||
user_email VARCHAR(255) NOT NULL, |
|||
nonce VARCHAR(64) NOT NULL, |
|||
exp BIGINT NOT NULL, |
|||
|
|||
PRIMARY KEY (state) |
|||
); |
@ -0,0 +1 @@ |
|||
ALTER TABLE twofactor_incomplete DROP COLUMN device_type; |
@ -0,0 +1 @@ |
|||
ALTER TABLE twofactor_incomplete ADD COLUMN device_type INT4 NOT NULL DEFAULT 14; -- 14 = Unknown Browser |
@ -0,0 +1,5 @@ |
|||
ALTER TABLE users_collections |
|||
ADD COLUMN manage BOOLEAN NOT NULL DEFAULT FALSE; |
|||
|
|||
ALTER TABLE collections_groups |
|||
ADD COLUMN manage BOOLEAN NOT NULL DEFAULT FALSE; |
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue