Database
Database
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
def eliminar_usuario(usuario_id: int) -> None:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("DELETE FROM usuarios WHERE id = ?", (usuario_id,))
[Link]()
[Link]()
except Exception as e:
print(f"Error al eliminar el usuario: {e}")
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
def obtener_todos_los_usuarios() -> list[Usuario]:
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios
""")
rows = [Link]()
return [Usuario(*row) for row in rows]
except Exception as e:
print(f"Error al obtener usuarios: {e}")
return []
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
tareas = [{"id": row[0], "titulo": row[1], "descripcion": row[2]} for row in
rows]
return tareas
import sqlite3
from sqlite3 import IntegrityError, OperationalError, DatabaseError
from clases import Usuario, UsuarioYaExisteError
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
def obtener_usuario_por_id(usuario_id: int) -> Usuario | None:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
def obtener_rol_usuario_db(username: str) -> str | None:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
def ver_tareas_usuario(usuario_id: int) -> list[dict]:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
def eliminar_usuario(usuario_id: int) -> None:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("DELETE FROM usuarios WHERE id = ?", (usuario_id,))
[Link]()
[Link]()
except Exception as e:
print(f"Error al eliminar el usuario: {e}")
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
def obtener_usuario_por_id(usuario_id: int) -> Usuario | None:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()
DB_NAME = "[Link]"
def obtener_conexion():
conn = [Link]("[Link]")
cur = [Link]()
[Link]("PRAGMA foreign_keys = ON;") # 🔥 ACTIVAR FOREIGN KEYS
return conn
def crear_tabla():
try:
with obtener_conexion() as conn:
cur = [Link]()
[Link]("""
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
rol TEXT DEFAULT 'usuario',
email TEXT,
phone TEXT,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL
);
""")
[Link]("""
CREATE TABLE IF NOT EXISTS tareas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
descripcion TEXT,
usuario_id INTEGER NOT NULL,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
""")
[Link]()
except (OperationalError, DatabaseError) as e:
print(f"Error al crear las tablas en la base de datos: {e}")
def crear_usuario(username: str, rol: str, email: str, phone: str, password_hash:
str, salt: str) -> int:
try:
conn = obtener_conexion()
cur = [Link]()
[Link]("""
INSERT INTO usuarios (username, rol, email, phone, password_hash, salt)
VALUES (?, ?, ?, ?, ?, ?)
""", (username, rol, email, phone, password_hash, salt))
[Link]()
return [Link]
except IntegrityError:
raise UsuarioYaExisteError("El usuario ya existe en la base de datos.")
finally:
[Link]()
[Link]("""
SELECT id, username, rol, email, phone, password_hash, salt
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]("""
SELECT id, username, password_hash, salt, rol, email, phone
FROM usuarios WHERE id = ?
""", (usuario_id,))
row = [Link]()
[Link]()
if row:
return Usuario(*row)
return None
[Link]()
return [Link]
except Exception as e:
print(f"Error al crear la tarea: {e}")
finally:
[Link]()
[Link]("""
SELECT rol
FROM usuarios WHERE username = ?
""", (username,))
row = [Link]()
[Link]()
if row:
return row[0]
return None
[Link]("""
SELECT id, titulo, descripcion
FROM tareas WHERE usuario_id = ?
""", (usuario_id,))
rows = [Link]()
[Link]()