name: 🪞 Grid-DB → Google Drive 镜像同步

on:
  push:
    paths:
      - 'grid-db/memory/**'
      - 'grid-db/outbox/latest/**'
      - 'grid-db/rules/**'
      - 'grid-db/drive-index/**'
  schedule:
    - cron: '*/15 * * * *'
  workflow_dispatch:

permissions:
  contents: write

jobs:
  sync-to-drive:
    if: github.actor != 'zhuyuan-bot' && !contains(github.event.head_commit.message, '[skip ci]')
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: 🔧 安装依赖
        run: npm install googleapis

      - name: 🪞 同步到 Google Drive
        env:
          GDRIVE_CLIENT_ID: ${{ secrets.GDRIVE_CLIENT_ID }}
          GDRIVE_CLIENT_SECRET: ${{ secrets.GDRIVE_CLIENT_SECRET }}
          GDRIVE_REFRESH_TOKEN: ${{ secrets.GDRIVE_REFRESH_TOKEN }}
          DRIVE_FOLDER_ID: ${{ secrets.DRIVE_MIRROR_FOLDER_ID }}
        run: node scripts/grid-db/sync-to-drive.js

      - name: 📋 写同步日志
        run: |
          mkdir -p grid-db/logs
          echo "$(date -u +%Y-%m-%dT%H:%M:%SZ) | sync-to-drive | OK" >> grid-db/logs/drive-sync.log
          git config user.name "zhuyuan-bot"
          git config user.email "zhuyuan@guanghulab.com"
          git add -f grid-db/logs/drive-sync.log
          git diff --cached --quiet || git commit -m "log: Drive sync [skip ci]"
          git push
