| @@ -0,0 +1,65 @@ | |||
| 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}" | |||
| 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'] ) | |||
| projects.each_with_index do |project, index| | |||
| result = Gitea::Repository::Commits::ListService.call(project.owner.login,project.identifier,sha: "", page: 1, limit: 5, 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 | |||