mekasu0124

Untitled

May 5th, 2024
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.00 KB | None | 0 0
  1. import os
  2. import sqlite3 as sql
  3.  
  4. from src.DreamersDiscoveries.infrastructure.services.result import Result
  5. from src.DreamersDiscoveries.infrastructure.models.user_model import UserModel
  6.  
  7. class Database:
  8.     def __init__(self):
  9.         self.file_path = ""
  10.  
  11.     def check_for_db_file(self):
  12.         src_path = 'src'
  13.         sub_path = os.path.join(src_path, 'DreamersDiscoveries')
  14.         infrastructure_path = os.path.join(sub_path, 'infrastructure')
  15.         db_path = os.path.join(infrastructure_path, "database")
  16.         self.file_path = os.path.join(db_path, 'main.db')
  17.  
  18.         if not os.path.exists(self.file_path):
  19.             tables_setup_check = self.create_tables()
  20.  
  21.             if not tables_setup_check.is_success:
  22.                 return Result.fail(tables_setup_check.message)
  23.            
  24.             return Result.ok("Database Created Successfully")
  25.        
  26.         return Result.ok("Database Already Exists")
  27.        
  28.     def create_tables(self):
  29.         user_table_check = self.create_user_table()
  30.  
  31.         if not user_table_check.is_success:
  32.             return Result.fail(user_table_check.message)
  33.  
  34.         entry_table_check = self.create_entry_table()
  35.  
  36.         if not entry_table_check.is_success:
  37.             return Result.fail(entry_table_check.message)
  38.        
  39.         default_user_written_check = self.insert_default_user()
  40.  
  41.         if not default_user_written_check.is_success:
  42.             return Result.fail(default_user_written_check.message)
  43.        
  44.         print(user_table_check.message)
  45.         print(entry_table_check.message)
  46.         print(default_user_written_check.message)        
  47.         return Result.ok("Datbase Tables Created Successfully")
  48.  
  49.     def create_user_table(self):
  50.         with sql.connect(self.file_path) as mdb:
  51.             cur = mdb.cursor()
  52.  
  53.             try:
  54.                 cur.execute(
  55.                     '''CREATE TABLE IF NOT EXISTS users(
  56.                        id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
  57.                        first_name TEXT,
  58.                        last_name TEXT,
  59.                        email_address TEXT,
  60.                        username TEXT,
  61.                        password TEXT,
  62.                        UNIQUE(email_address, username))
  63.                    '''
  64.                 )
  65.  
  66.                 return Result.ok("User Table Created Successfully")
  67.             except Exception as e:
  68.                 return Result.fail(e)
  69.  
  70.     def create_entry_table(self):
  71.         with sql.connect(self.file_path) as mdb:
  72.             cur = mdb.cursor()
  73.  
  74.             try:
  75.                 cur.execute(
  76.                     '''CREATE TABLE IF NOT EXISTS entries(
  77.                        id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
  78.                        date TEXT,
  79.                        time INTEGER,
  80.                        title TEXT,
  81.                        entry TEXT
  82.                    )'''
  83.                 )
  84.  
  85.                 return Result.ok("Entries Table Created Successfully")
  86.             except Exception as e:
  87.                 return Result.fail(e)
  88.    
  89.     def insert_default_user(self):
  90.         with sql.connect(self.file_path) as mdb:
  91.             cur = mdb.cursor()
  92.  
  93.             default_user = UserModel()
  94.  
  95.             try:
  96.                 cur.execute(
  97.                     '''INSERT INTO users(
  98.                        first_name, last_name,
  99.                        email_address, username,
  100.                        password
  101.                    )
  102.                    VALUES (?,?,?,?,?)''',
  103.                     (
  104.                         default_user.user_info.first_name,
  105.                         default_user.user_info.last_name,
  106.                         default_user.user_info.email_address,
  107.                         default_user.user_login.username,
  108.                         default_user.user_login.password
  109.                     )
  110.                 )
  111.  
  112.                 return Result.ok("Default User Written Successfully")
  113.             except Exception as e:
  114.                 return Result.fail(e)
  115.  
Advertisement
Add Comment
Please, Sign In to add comment