diff options
author | Christian Cleberg <hello@cleberg.net> | 2024-11-06 23:23:27 -0600 |
---|---|---|
committer | Christian Cleberg <hello@cleberg.net> | 2024-11-06 23:23:27 -0600 |
commit | 6dde4dd0bc5e5f91f89587c75a30c9ef7a24494c (patch) | |
tree | 6cf4b78ddd63a4606e19fcad423ed2e19ad2a268 /src/database.py | |
parent | b5a5fadff88615c8da8a9feb80c86fd8adb238f5 (diff) | |
download | yoshi-cli-6dde4dd0bc5e5f91f89587c75a30c9ef7a24494c.tar.gz yoshi-cli-6dde4dd0bc5e5f91f89587c75a30c9ef7a24494c.tar.bz2 yoshi-cli-6dde4dd0bc5e5f91f89587c75a30c9ef7a24494c.zip |
package as a cli app
Diffstat (limited to 'src/database.py')
-rw-r--r-- | src/database.py | 125 |
1 files changed, 0 insertions, 125 deletions
diff --git a/src/database.py b/src/database.py deleted file mode 100644 index e1e2e78..0000000 --- a/src/database.py +++ /dev/null @@ -1,125 +0,0 @@ -""" -This module provides a basic interface for connecting to and interacting with a SQLite database. -It includes functions for creating connections, executing queries, and retrieving results. -""" - -import sqlite3 -import sys -import os - -VAULT_DECRYPTED = 'vault.sqlite' -VAULT_ENCRYPTED = 'vault.sqlite.aes' - - -def create_table() -> None: - """Create the accounts table within the vault database.""" - db_connection = sqlite3.connect(VAULT_DECRYPTED) - cursor = db_connection.cursor() - cursor.execute( - ''' CREATE TABLE IF NOT EXISTS accounts (uuid text, application text, - username text, password text, url text) ''' - ) - db_connection.commit() - db_connection.close() - - -def check_table() -> bool: - """Check if the 'accounts' table exists within the vault database.""" - check = False - db_connection = sqlite3.connect(VAULT_DECRYPTED) - cursor = db_connection.cursor() - cursor.execute( - ''' SELECT count(name) FROM sqlite_master WHERE type='table' - AND name='accounts' ''' - ) - if cursor.fetchone()[0] != 1: - user_choice = input( - 'Password vault does not exist. Would you like to create it now? (y/n): ') - if user_choice.lower() == 'y': - create_table() - check = True - else: - sys.exit('Program aborted upon user request.') - else: - check = True - db_connection.commit() - db_connection.close() - return check - - -def add_account(uuid: str, application: str, username: str, password: str, - url: str) -> None: - """Add a new account within the vault database.""" - db_connection = sqlite3.connect(VAULT_DECRYPTED) - cursor = db_connection.cursor() - cursor.execute( - ''' INSERT INTO accounts VALUES (:uuid,:application,:username, - :password,:url) ''', { - 'uuid': uuid, 'application': application, 'username': username, - 'password': password, 'url': url - } - ) - db_connection.commit() - db_connection.close() - - -def delete_account(uuid: str) -> None: - """Delete an account within the vault database by its unique ID.""" - db_connection = sqlite3.connect(VAULT_DECRYPTED) - cursor = db_connection.cursor() - cursor.execute( - ''' DELETE FROM accounts WHERE uuid = :uuid ''', {'uuid': uuid} - ) - db_connection.commit() - db_connection.close() - - -def find_account(uuid: str) -> list: - """Find an account within the vault database by its unique ID.""" - db_connection = sqlite3.connect(VAULT_DECRYPTED) - cursor = db_connection.cursor() - cursor.execute( - ''' SELECT * FROM accounts WHERE uuid = :uuid ''', {'uuid': uuid} - ) - account = cursor.fetchall() - db_connection.close() - return account - - -def find_accounts() -> list: - """Return all accounts stored within the vault database.""" - db_connection = sqlite3.connect(VAULT_DECRYPTED) - cursor = db_connection.cursor() - cursor.execute(''' SELECT * FROM accounts ''') - accounts = cursor.fetchall() - db_connection.close() - return accounts - - -def update_account(field_name: str, new_value: str, uuid: str) -> None: - """Update an account within the vault database by its unique ID.""" - queries = { - 'application': 'UPDATE accounts SET application = :new_value WHERE uuid = :uuid', - 'username': 'UPDATE accounts SET username = :new_value WHERE uuid = :uuid', - 'password': 'UPDATE accounts SET password = :new_value WHERE uuid = :uuid', - 'url': 'UPDATE accounts SET url = :new_value WHERE uuid = :uuid' - } - db_connection = sqlite3.connect(VAULT_DECRYPTED) - cursor = db_connection.cursor() - cursor.execute(queries[field_name], {'new_value': new_value, 'uuid': uuid}) - db_connection.commit() - db_connection.close() - - -def purge_table() -> None: - """Purge the 'accounts' table within the vault database.""" - db_connection = sqlite3.connect(VAULT_DECRYPTED) - cursor = db_connection.cursor() - cursor.execute(''' DROP TABLE accounts ''') - db_connection.commit() - db_connection.close() - - -def purge_database() -> None: - """Purge the entire vault database.""" - os.remove(VAULT_DECRYPTED) |