This repository was archived by the owner on May 11, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcli.py
More file actions
executable file
·58 lines (43 loc) · 1.4 KB
/
cli.py
File metadata and controls
executable file
·58 lines (43 loc) · 1.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/usr/bin/env python3
import argparse
from sqlmodel import Session
from src import model
from src.config import settings
from src.depends import engine
from src.utils import generate_secret, hash_password
parser = argparse.ArgumentParser()
sub_parser = parser.add_subparsers(dest='command')
create_database_parser = sub_parser.add_parser('create-database')
create_user_parser = sub_parser.add_parser('create-user')
create_user_parser.add_argument('name', type=str)
create_user_parser.add_argument('email', type=str)
create_user_parser.add_argument('password', type=str)
sub_parser.add_parser('purge')
args = parser.parse_args()
def create_database():
model.create_db_and_tables(engine)
def create_user(name: str, email: str, password: str):
with Session(engine) as db:
salt = generate_secret()
password_hash = hash_password(password, salt)
user = model.User(name=name, email=email, password=password_hash, salt=salt)
db.add(user)
db.commit()
db.refresh(user)
print(f'User created, uid: {user.id}.')
def purge():
from src.purger import Purger
Purger(config=settings.purge).purge()
def main():
match args.command:
# used for development
case 'create-database':
create_database()
case 'create-user':
create_user(args.name, args.email, args.password)
case 'purge':
purge()
case _:
parser.print_help()
if __name__ == '__main__':
main()