44 push :
55 paths :
66 - ' LearningManagementSystems/**/*.sql'
7- - ' !**/*.prisma' # Не запускать, если меняется только .prisma
7+ - ' !**/*.prisma' # Не запускать, если меняются только .prisma файлы
88 branches :
99 - main
1010 - master
1515 permissions :
1616 contents : write
1717 pull-requests : write
18+
1819 steps :
1920 - name : Checkout repository
2021 uses : actions/checkout@v4
@@ -30,70 +31,39 @@ jobs:
3031 - name : Install Prisma CLI
3132 run : npm install -g prisma
3233
33- - name : Find SQL files
34- id : find_sql
35- run : |
36- SQL_FILES=$(find LearningManagementSystems -name "*.sql" -type f)
37- if [ -z "$SQL_FILES" ]; then
38- echo "No SQL files found"
39- exit 1
40- fi
41- echo "files=$SQL_FILES" >> $GITHUB_OUTPUT
42-
43- - name : Process each SQL file
34+ - name : Process SQL files
4435 run : |
45- while IFS= read -r sql_file; do
46- echo "Processing $sql_file"
47-
48- # Определяем путь к Prisma-файлу
36+ find LearningManagementSystems -name "*.sql" | while read sql_file; do
4937 prisma_file="${sql_file%.sql}.prisma"
50- temp_db="/tmp/$(basename ${sql_file%.sql}).db"
51-
52- # Создаём временную SQLite базу
53- sqlite3 "$temp_db" < "$sql_file"
38+ temp_db="/tmp/$(basename "${sql_file%.sql}").db"
5439
55- # Если Prisma-файл ещё не существует — создаём новый schema.prisma
56- if [ ! -f "$prisma_file" ]; then
57- mkdir -p "$(dirname "$prisma_file")"
58- cat > "$prisma_file" << EOF
59- // Auto-generated from $sql_file
60- generator client {
61- provider = "prisma-client-js"
62- }
40+ echo "🔄 Processing $sql_file -> $prisma_file"
6341
64- datasource db {
65- provider = "mysql"
66- url = "file:$temp_db"
67- }
42+ sqlite3 "$temp_db" < "$sql_file"
6843
69- // Models will be added below
70- EOF
71- fi
44+ mkdir -p "$(dirname "$prisma_file")"
7245
73- # Интроспекция: получаем схему из SQL через SQLite
74- npx prisma db pull --schema="$prisma_file" --force
46+ printf 'generator client {\n provider = "prisma-client-js"\n}\n\ndatasource db {\n provider = "sqlite"\n url = "file:%s"\n}\n' "$temp_db" > "$prisma_file"
7547
76- # Форматируем
77- npx prisma format --schema="$prisma_file"
48+ prisma db pull --schema="$prisma_file" --force
49+ prisma format --schema="$prisma_file"
7850
79- echo "✅ Generated Prisma schema : $prisma_file"
80- done <<< "$(find LearningManagementSystems -name "*.sql" -type f)"
51+ echo "✅ Generated $prisma_file"
52+ done
8153
8254 - name : Commit and Push Prisma files
8355 run : |
8456 git config user.name "github-actions[bot]"
8557 git config user.email "github-actions[bot]@users.noreply.github.com"
8658
87- # Добавляем все .prisma файлы
59+ # Добавляем все новые/изменённые .prisma файлы
8860 git add **/*.prisma
8961
90- # Проверяем, есть ли изменения
91- if git diff-index --quiet HEAD --; then
92- echo "✅ No changes to commit"
93- exit 0
62+ # Проверяем, есть ли изменения для коммита
63+ if ! git diff --cached --quiet; then
64+ git commit -m "🤖 Auto-generate Prisma schema from SQL. Automatically generated via GitHub Actions when SQL schema was updated."
65+ git push origin HEAD:${{ github.ref_name }}
66+ echo "✅ Изменения закоммичены и отправлены в ${{ github.ref_name }}"
9467 else
95- git commit -m "🤖 Auto-generate Prisma schema from SQL
96- Generated via GitHub Actions when SQL was updated."
97- git push origin HEAD:main
98- echo "✅ Prisma schemas committed and pushed"
68+ echo "ℹ️ Изменений нет — коммит не требуется"
9969 fi
0 commit comments