From ed0655452c1a00611cd95fd162d732e2e8902f32 Mon Sep 17 00:00:00 2001 From: xiaoxiaoqiong Date: Mon, 11 Jul 2022 15:52:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BB=8Ewebhook=E6=8E=A5?= =?UTF-8?q?=E6=94=B6=E4=BB=93=E5=BA=93=E6=97=A5=E5=BF=97=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/commit_logs_controller.rb | 23 +++++++++++++++++++ app/models/commit_log.rb | 6 +++++ config/routes.rb | 2 ++ .../20220711061848_create_commit_logs.rb | 17 ++++++++++++++ 4 files changed, 48 insertions(+) create mode 100644 app/controllers/commit_logs_controller.rb create mode 100644 app/models/commit_log.rb create mode 100644 db/migrate/20220711061848_create_commit_logs.rb diff --git a/app/controllers/commit_logs_controller.rb b/app/controllers/commit_logs_controller.rb new file mode 100644 index 000000000..71eada879 --- /dev/null +++ b/app/controllers/commit_logs_controller.rb @@ -0,0 +1,23 @@ +class CommitLogsController < ApplicationController + + def create + tip_exception "未认证" unless params[:token].to_s == "7917908927b6f1b792f2027a08a8b24a2de42c1692c2fd45da0dee5cf90a5af5" + ref = params[:ref] + commit_id = params[:commits][0][:id] + message = params[:commits][0][:message] + user_name = params[:message][0][:committer][:username] + user_mail = params[:message][0][:committer][:email] + user = User.find_by(mail: user_mail) + user = User.find_by(login: user_name) if user.blank? + + repository_id = params[:repository][:id] + repository_name = params[:repository][:name] + repository_full_name = params[:repository][:full_name] + project = Project.where(identifier: repository_name).where(user_id: user.id)&.first + project = Project.where(identifier: repository_name).where(gpid: repository_id)&.first if project.blank? + CommitLog.create(user: user, project: project, repository_id: repository_id, + name: repository_name, full_name: repository_full_name, + ref: ref, commit_id: commit_id, message: message) + + end +end diff --git a/app/models/commit_log.rb b/app/models/commit_log.rb new file mode 100644 index 000000000..9b51b0631 --- /dev/null +++ b/app/models/commit_log.rb @@ -0,0 +1,6 @@ +class CommitLog < ApplicationRecord + belongs_to :user + belongs_to :project + belongs_to :repository + +end diff --git a/config/routes.rb b/config/routes.rb index 79b937b00..73e06ea53 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -973,6 +973,8 @@ Rails.application.routes.draw do get 'oauth/get_code', to: 'oauth#get_code' get 'oauth/get_token_callback', to: 'oauth#get_token_callback' + resources :commit_logs, :only => [:create] + root 'main#index' diff --git a/db/migrate/20220711061848_create_commit_logs.rb b/db/migrate/20220711061848_create_commit_logs.rb new file mode 100644 index 000000000..e0ef451af --- /dev/null +++ b/db/migrate/20220711061848_create_commit_logs.rb @@ -0,0 +1,17 @@ +class CreateCommitLogs < ActiveRecord::Migration[5.2] + def change + create_table :commit_logs do |t| + t.references :user + t.references :project + t.integer :repository_id + t.string :name + t.string :full_name + t.string :commit_id + t.string :ref + t.string :message + t.timestamps + end + + add_index :commit_logs, :commit_id + end +end