#!/usr/bin/env python # -*- coding: utf-8 -*- """ 用户数据库命令行接口 用于Go后端调用执行用户操作 """ import sys import json from user_database import UserDatabase def main(): if len(sys.argv) < 2: print(json.dumps({"error": "缺少命令参数"})) sys.exit(1) command = sys.argv[1] db = UserDatabase() try: if command == "create": # 创建用户: python user_cli.py create if len(sys.argv) < 5: print(json.dumps({"error": "参数不足: 需要用户名、密码和邮箱"})) sys.exit(1) username = sys.argv[2] password = sys.argv[3] email = sys.argv[4] user_id = db.create_user(username, password, email) print(json.dumps({ "success": True, "user_id": user_id, "username": username })) elif command == "verify": # 验证密码: python user_cli.py verify if len(sys.argv) < 4: print(json.dumps({"error": "参数不足: 需要用户名和密码"})) sys.exit(1) username = sys.argv[2] password = sys.argv[3] user = db.verify_password(username, password) if user: # 删除密码哈希 user_data = {k: v for k, v in user.items() if k != 'password_hash'} # 转换datetime为字符串 if 'created_at' in user_data and user_data['created_at']: user_data['created_at'] = str(user_data['created_at']) if 'last_login_at' in user_data and user_data['last_login_at']: user_data['last_login_at'] = str(user_data['last_login_at']) # 更新登录时间 db.update_login_time(user['user_id']) print(json.dumps({ "success": True, **user_data })) else: print(json.dumps({"error": "用户名或密码错误"})) sys.exit(1) elif command == "get": # 获取用户信息: python user_cli.py get if len(sys.argv) < 3: print(json.dumps({"error": "参数不足: 需要用户ID"})) sys.exit(1) user_id = int(sys.argv[2]) user = db.get_user_by_id(user_id) if user: # 删除密码哈希 user_data = {k: v for k, v in user.items() if k != 'password_hash'} # 转换datetime为字符串 if 'created_at' in user_data and user_data['created_at']: user_data['created_at'] = str(user_data['created_at']) if 'last_login_at' in user_data and user_data['last_login_at']: user_data['last_login_at'] = str(user_data['last_login_at']) print(json.dumps(user_data)) else: print(json.dumps({"error": "用户不存在"})) sys.exit(1) elif command == "update": # 更新用户信息: python user_cli.py update [--email ] [--bio ] if len(sys.argv) < 3: print(json.dumps({"error": "参数不足: 需要用户ID"})) sys.exit(1) user_id = int(sys.argv[2]) kwargs = {} # 解析命令行参数 i = 3 while i < len(sys.argv): if sys.argv[i] == "--email" and i + 1 < len(sys.argv): kwargs['email'] = sys.argv[i + 1] i += 2 elif sys.argv[i] == "--bio" and i + 1 < len(sys.argv): kwargs['bio'] = sys.argv[i + 1] i += 2 elif sys.argv[i] == "--password" and i + 1 < len(sys.argv): kwargs['password'] = sys.argv[i + 1] i += 2 else: i += 1 if not kwargs: print(json.dumps({"error": "没有提供需要更新的字段"})) sys.exit(1) success = db.update_user(user_id, **kwargs) if success: print(json.dumps({"success": True, "message": "更新成功"})) else: print(json.dumps({"error": "更新失败"})) sys.exit(1) else: print(json.dumps({"error": f"未知命令: {command}"})) sys.exit(1) except db.UserExistsError as e: print(json.dumps({"error": str(e), "type": "UserExistsError"})) sys.exit(1) except db.ValidationError as e: print(json.dumps({"error": str(e), "type": "ValidationError"})) sys.exit(1) except db.UserNotFoundError as e: print(json.dumps({"error": str(e), "type": "UserNotFoundError"})) sys.exit(1) except Exception as e: print(json.dumps({"error": str(e), "type": "Exception"})) sys.exit(1) if __name__ == "__main__": main()