69 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Ruby
		
	
	
	
namespace :total_commit_to_db do
 | 
						|
  desc "total_commit_to_db"
 | 
						|
  task done: :environment do
 | 
						|
    project_name = ENV['name'] || "mindspore"
 | 
						|
    puts "project_id=================#{project_name}"
 | 
						|
    if ENV['project_id'].present?
 | 
						|
      projects = Project.where(id: ENV['project_id'])
 | 
						|
    else
 | 
						|
      projects = Project.where(identifier: ['MindSpore-first-experience', ' MindSpore-install', 'MindSpore-Application-practice', 'MindSpore-Model-Development', 'MindSpore-Data-preprocessing', 'Mindspore-Data-storage-use', 'MindSpore-Data-storage-kunpeng', 'MindSpore-LeNet-jzx3', 'MindSpore-competition'] )
 | 
						|
    end
 | 
						|
    projects.each_with_index do |project, index|
 | 
						|
      result = Gitea::Repository::Commits::ListService.call(project.owner.login,project.identifier,sha: "", page: 1, limit: 200, token: project.owner.gitea_token)
 | 
						|
      next if result.blank? || result[:total_count].blank?
 | 
						|
      total_count = result[:total_count]
 | 
						|
      # next if total_count > 2000
 | 
						|
      puts "#{index} total_count==========#{total_count}"
 | 
						|
      if total_count > 200
 | 
						|
        total_page =  (total_count / 200) + 1
 | 
						|
        total_page.times do |i|
 | 
						|
          add_commit_to_index(project, i + 1)
 | 
						|
        end
 | 
						|
      else
 | 
						|
        # add_commit_to_index(project, 1)
 | 
						|
        data = ""
 | 
						|
        result[:body].each do |commit|
 | 
						|
          commit_date =  Time.parse(commit['commit']['author']['date'])
 | 
						|
          commit_date_str = commit_date.strftime("%Y-%m-%d")
 | 
						|
          data += "(\"#{commit_date_str}\",1),"
 | 
						|
        end
 | 
						|
        data = data[0,data.length-1]
 | 
						|
        sql_connection = ActiveRecord::Base.connection
 | 
						|
        sql_connection.begin_db_transaction
 | 
						|
        sql = "insert into mindspore_commit(week_date,num) values #{data}"
 | 
						|
        sql_connection.execute(sql)
 | 
						|
      end
 | 
						|
      puts "#{index} date_count_hash===========#{@date_count_hash.to_json}"
 | 
						|
 | 
						|
    end
 | 
						|
    puts "@date_count_hash===========#{@date_count_hash.to_json}"
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
    # Time.now
 | 
						|
    # Wed Mar 15 14:12:09 2023 +0800
 | 
						|
    # Time.now.strftime("%a %b %d %H:%M:%S %Y")
 | 
						|
    # Time.now.strftime("%a %b %d %H:%M:%S %Y +0800")
 | 
						|
    Time.parse("2023-03-15 14:12:09").strftime("%a %b %d %H:%M:%S %Y +0800")
 | 
						|
 | 
						|
  end
 | 
						|
 | 
						|
  def add_commit_to_index(project, page)
 | 
						|
    # Gitea::Repository::Commits::ListSliceService.call(project.owner.login,project.identifier,sha: "", page: 1, limit: 1000, token: "a9244ecac647dd33fee3b480c5898baab1d3fe7d")
 | 
						|
    result = Gitea::Repository::Commits::ListService.call(project.owner.login,project.identifier,sha: "", page: page, limit: 200, token: project.owner.gitea_token)
 | 
						|
    data = ""
 | 
						|
    result[:body].each do |commit|
 | 
						|
      commit_date =  Time.parse(commit['commit']['author']['date'])
 | 
						|
      commit_date_str = commit_date.strftime("%Y-%m-%d")
 | 
						|
      data += "(\"#{commit_date_str}\",1),"
 | 
						|
    end
 | 
						|
    data = data[0,data.length-1]
 | 
						|
    sql_connection = ActiveRecord::Base.connection
 | 
						|
    sql_connection.begin_db_transaction
 | 
						|
    sql = "insert into mindspore_commit(week_date,num) values #{data}"
 | 
						|
    sql_connection.execute(sql)
 | 
						|
  end
 | 
						|
 | 
						|
end
 |