このコミットが含まれているのは:
2026-07-12 01:56:24 +09:00
コミット 06d6e512e4
3個のファイルの変更19行の追加6行の削除
+4 -4
ファイルの表示
@@ -47,10 +47,9 @@ class PostImportPreviewer
attributes[field] = value
provenance[field] = 'automatic'
end
post = Post.new(url:)
post.valid?
normal_url = post.url
errors = post.errors.to_hash.transform_values(&:dup)
normal_url = normalised_url(url)
errors = { }
errors[:url] = ['URL が不正です.'] if normal_url.blank?
validation_warnings = []
errors[:url] = ['URL が重複しています.'] if normal_url.present? && urls.key?(normal_url)
urls[normal_url] = true if normal_url.present?
@@ -165,6 +164,7 @@ class PostImportPreviewer
video_ms: parse_duration(attributes['duration'], errors))
post.valid?
post.errors.each { |error| (errors[error.attribute] ||= []) << error.message }
errors.delete(:url)
end
def parse_duration value, errors
+7 -1
ファイルの表示
@@ -11,7 +11,11 @@ class PostImportRunner
raise ArgumentError, "取込件数は #{ MAX_ROWS } 件までです." if @rows.length > MAX_ROWS
raise ArgumentError, '取込データが大きすぎます.' if @rows.sum { |row| row.to_json.bytesize } > PostImportSourceParser::MAX_BYTES
results = @rows.map { |row| run_row(normalise_row(row)) }
normalised_rows = @rows.map { |row| normalise_row(row) }
source_rows = normalised_rows.map { _1['source_row'] }
raise ArgumentError, '元行番号が重複しています.' if source_rows.uniq.length != source_rows.length
results = normalised_rows.map { |row| run_row(row) }
{ created: results.count { _1[:status] == 'created' }, skipped: results.count { _1[:status] == 'skipped' },
failed: results.count { _1[:status] == 'failed' }, rows: results }
end
@@ -77,6 +81,8 @@ class PostImportRunner
raise ArgumentError unless metadata_url.nil? || metadata_url.is_a?(String)
raise ArgumentError if metadata_url.to_s.bytesize > PostImportSourceParser::MAX_CELL_BYTES
raise ArgumentError if row.to_json.bytesize > PostImportSourceParser::MAX_BYTES
tag_sources = row['tag_sources']
raise ArgumentError unless tag_sources.nil? || tag_sources.is_a?(Hash)
end
def normalise_row row