feat: 添加用户信息存储功能

- 添加 avatar_url 和 nickname 字段到 users 表
- 修改 get_user_by_id 查询包含新字段
- 添加 save_user_profile API
- 优化 deploy.sh 默认使用 release 模式
This commit is contained in:
2026-03-26 14:28:46 +08:00
parent fcf358f990
commit 6d2824589c
6 changed files with 162 additions and 276 deletions

View File

@@ -1,23 +1,19 @@
#!/bin/bash
# ==============================================================================
# 部署脚本 - Rust Backend (支持编译模式选择)
# 部署脚本 - Rust Backend
# ==============================================================================
# --- 1. 配置 ---
# 项目名称
PROJECT_NAME="rust-backend"
# 远程服务器信息
REMOTE_USER="root"
REMOTE_HOST="1panel-server"
REMOTE_DIR="/root/rust/rust_backend"
# 远程服务名称 (用于 systemctl restart)
SERVICE_NAME="rust-backend.service"
# --- 2. 脚本初始化 ---
set -euo pipefail
# 定义日志函数
log_info() {
echo -e "\033[32m[INFO]\033[0m $1"
}
@@ -27,50 +23,7 @@ log_error() {
exit 1
}
# 打印帮助信息
usage() {
echo "用法: $0 [--release]"
echo ""
echo "选项:"
echo " --release 以 Release 模式编译并部署 (默认为 Debug 模式)"
echo " -h, --help 显示此帮助信息"
exit 0
}
# --- 3. 参数解析与动态配置 ---
# 默认为 Debug 模式
IS_RELEASE=false
BUILD_MODE="debug"
CARGO_ARGS=""
TARGET_BASE_DIR="/home/milky/Documents/ASD-backend/rust-backend/target/x86_64-unknown-linux-gnu/"
# 解析命令行参数
if [[ "$#" -gt 0 ]]; then
case "$1" in
--release)
IS_RELEASE=true
BUILD_MODE="release"
CARGO_ARGS="--release"
;;
-h|--help)
usage
;;
*)
log_error "未知参数: '$1'。使用 '$0 --help' 查看用法。"
;;
esac
fi
# 根据模式动态设置目标目录
TARGET_DIR="${TARGET_BASE_DIR}${BUILD_MODE}/"
log_info "部署模式: ${BUILD_MODE}"
log_info "本地目标目录: ${TARGET_DIR}"
# --- 4. 核心功能函数 ---
# 检查必要的命令是否存在
# --- 3. 检查依赖 ---
check_dependencies() {
local deps=("cargo" "rsync" "ssh")
for cmd in "${deps[@]}"; do
@@ -81,20 +34,19 @@ check_dependencies() {
log_info "所有依赖项检查通过。"
}
# 编译项目
# --- 4. 编译项目 ---
build_project() {
log_info "开始编译项目 (${BUILD_MODE}模式)..."
# 使用动态的 CARGO_ARGS
if cargo build ${CARGO_ARGS} --target x86_64-unknown-linux-gnu --quiet; then
log_info "开始编译项目 (release模式)..."
if cargo build --release; then
log_info "项目编译成功。"
else
log_error "项目编译失败!"
fi
}
# 上传二进制文件
# --- 5. 上传二进制文件 ---
upload_binary() {
local binary_path="${TARGET_DIR}${PROJECT_NAME}"
local binary_path="./target/release/${PROJECT_NAME}"
if [ ! -f "$binary_path" ]; then
log_error "编译产物未找到: $binary_path"
fi
@@ -104,7 +56,7 @@ upload_binary() {
log_info "文件上传成功。"
}
# 重启远程服务
# --- 6. 重启远程服务 ---
restart_remote_service() {
log_info "正在重启远程服务 '${SERVICE_NAME}'..."
if ssh "${REMOTE_USER}@${REMOTE_HOST}" "systemctl restart ${SERVICE_NAME}"; then
@@ -114,10 +66,9 @@ restart_remote_service() {
fi
}
# --- 5. 主执行流程 ---
# --- 7. 主执行流程 ---
main() {
log_info "========== 开始部署 (${BUILD_MODE}模式) =========="
log_info "========== 开始部署 =========="
check_dependencies
build_project
upload_binary
@@ -125,5 +76,4 @@ main() {
log_info "========== 部署完成! =========="
}
# 执行主函数
main