import argparse
from pathlib import Path
from db import ROOT, backup, connect, init, password_hash

parser=argparse.ArgumentParser(description='RouteFlow local administration')
parser.add_argument('command',choices=['init','demo','backup','reset-password'])
parser.add_argument('--username',default='admin')
args=parser.parse_args()
init()
if args.command=='demo':
    from seed import seed
    with connect() as db:
        if db.execute('SELECT id FROM routes LIMIT 1').fetchone(): raise SystemExit('Demo only loads into an empty database')
        seed(db)
    print('Fictional demo business loaded.')
elif args.command=='backup':
    from datetime import datetime
    folder=ROOT/'backups';folder.mkdir(exist_ok=True)
    target=folder/('routeflow-'+datetime.now().strftime('%Y%m%d-%H%M%S')+'.db')
    backup(str(target));print(target)
elif args.command=='reset-password':
    import getpass
    pw=getpass.getpass('New password (12+ characters): ')
    if len(pw)<12:raise SystemExit('Password too short')
    with connect() as db:
        result=db.execute('UPDATE users SET password_hash=? WHERE username=?',(password_hash(pw),args.username))
        if not result.rowcount:raise SystemExit('User not found')
    print('Password updated. Restart the server to revoke old sessions.')
