mirror of
https://github.com/gitlabhq/gitlabhq.git
synced 2025-08-01 15:53:04 +00:00
63 lines
1.8 KiB
Ruby
63 lines
1.8 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module API
|
|
module Admin
|
|
class Migrations < ::API::Base
|
|
feature_category :database
|
|
urgency :low
|
|
|
|
before do
|
|
authenticated_as_admin!
|
|
end
|
|
|
|
namespace 'admin' do
|
|
resources 'migrations/:timestamp/mark' do
|
|
desc 'Mark the migration as successfully executed' do
|
|
success [
|
|
{ code: 201, message: '201 Created' }
|
|
]
|
|
failure [
|
|
{ code: 401, message: '401 Unauthorized' },
|
|
{ code: 403, message: '403 Forbidden' },
|
|
{ code: 404, message: '404 Not found' },
|
|
{ code: 422, message: 'You can mark only pending migrations' }
|
|
]
|
|
tags %w[migrations]
|
|
end
|
|
params do
|
|
optional :database,
|
|
type: String,
|
|
values: Gitlab::Database.all_database_names,
|
|
desc: 'The name of the database',
|
|
default: 'main'
|
|
requires :timestamp,
|
|
type: Integer,
|
|
desc: 'The migration version timestamp'
|
|
end
|
|
post do
|
|
response = Database::MarkMigrationService.new(
|
|
connection: base_model.connection,
|
|
version: params[:timestamp]
|
|
).execute
|
|
|
|
if response.success?
|
|
created!
|
|
elsif response.reason == :not_found
|
|
not_found!
|
|
else
|
|
render_api_error!('You can mark only pending migrations', 422)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
helpers do
|
|
def base_model
|
|
database = params[:database] || Gitlab::Database::MAIN_DATABASE_NAME
|
|
@base_model ||= Gitlab::Database.database_base_models[database]
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|