updated db schema for attachments + add create user api endpoint
This commit is contained in:
1 parent
e6d3f5c7b7
commit
af7d682a38
8 files changed
+91
-9
No files matched your search
+32
-5
@@ -7,7 +7,7 @@ import flask_login
|
||||
|
||||
import mgU
|
||||
|
||||
DATABASE = "./main2.db"
|
||||
DATABASE = "./main.db"
|
||||
|
||||
ph = argon2.PasswordHasher()
|
||||
|
||||
@@ -46,21 +46,48 @@ class UserDTO:
|
||||
|
||||
@dataclasses.dataclass
|
||||
class MessageDTO:
|
||||
user: UserDTO
|
||||
user_id: UserDTO
|
||||
content: str
|
||||
time: int
|
||||
thread_id: int
|
||||
id: int | None = None
|
||||
|
||||
def insert_message(message: mgU.Message) -> None:
|
||||
def create_user(username: str, password: str) -> mgU.User | None:
|
||||
"""
|
||||
Create a new user with the given username and password.
|
||||
Returns the created User object with id, or None if creation fails.
|
||||
"""
|
||||
# Hash the password
|
||||
passhash = ph.hash(password)
|
||||
|
||||
try:
|
||||
with Opener() as (conn, cur):
|
||||
q = load_query("insert_user")
|
||||
cur.execute(q, [username, passhash])
|
||||
user_id = cur.lastrowid
|
||||
|
||||
return mgU.User(name=username, id=user_id)
|
||||
except sqlite3.IntegrityError:
|
||||
# Username already exists or other constraint violation
|
||||
return None
|
||||
|
||||
def insert_message(message: mgU.Message | MessageDTO) -> None:
|
||||
"""
|
||||
Insert a new message (from mgU.Message dataclass) and return a new mgU.Message with id, or None on failure.
|
||||
"""
|
||||
if type(message) == mgU.Message:
|
||||
thread_id = message.thread
|
||||
user_id = message.user.id
|
||||
elif type(message) == MessageDTO:
|
||||
thread_id = message.thread_id
|
||||
user_id = message.user_id
|
||||
|
||||
|
||||
with Opener() as (conn, cur):
|
||||
q = load_query("insert_message")
|
||||
cur.execute(q, [
|
||||
message.user,
|
||||
message.thread,
|
||||
user_id,
|
||||
thread_id,
|
||||
message.content,
|
||||
message.time
|
||||
])
|
||||
|
||||
Reference in new issue
Block a user