Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
a4e6a387
Commit
a4e6a387
authored
Dec 21, 2017
by
Jarka Kadlecová
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Migrate epic_issues position values correctly
parent
90f676ca
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
73 additions
and
3 deletions
+73
-3
db/migrate/20171214115254_add_position_to_epic_issues.rb
db/migrate/20171214115254_add_position_to_epic_issues.rb
+1
-1
db/migrate/20171221154744_set_epic_issue_position_values.rb
db/migrate/20171221154744_set_epic_issue_position_values.rb
+30
-0
db/schema.rb
db/schema.rb
+2
-2
spec/migrations/set_epic_issue_position_values.rb
spec/migrations/set_epic_issue_position_values.rb
+40
-0
No files found.
db/migrate/20171214115254_add_position_to_epic_issues.rb
View file @
a4e6a387
...
...
@@ -6,7 +6,7 @@ class AddPositionToEpicIssues < ActiveRecord::Migration
disable_ddl_transaction!
def
up
add_column_with_default
(
:epic_issues
,
:position
,
:integer
,
default:
Arel
.
sql
(
'id'
)
,
allow_null:
false
)
add_column_with_default
(
:epic_issues
,
:position
,
:integer
,
default:
1
,
allow_null:
false
)
end
def
down
...
...
db/migrate/20171221154744_set_epic_issue_position_values.rb
0 → 100644
View file @
a4e6a387
class
SetEpicIssuePositionValues
<
ActiveRecord
::
Migration
include
Gitlab
::
Database
::
MigrationHelpers
DOWNTIME
=
false
disable_ddl_transaction!
class
Epic
<
ActiveRecord
::
Base
self
.
table_name
=
'epics'
end
class
EpicIssue
<
ActiveRecord
::
Base
self
.
table_name
=
'epic_issues'
end
def
up
epic_issues
=
select_all
(
'SELECT id, epic_id FROM epic_issues ORDER by epic_id, id'
)
.
group_by
{
|
e
|
e
[
'epic_id'
]
}
epic_issues
.
each
do
|
epic_id
,
epic_issues
|
epic_issues
.
each_with_index
do
|
epic_issue
,
index
|
execute
(
"UPDATE epic_issues SET position =
#{
index
+
1
}
WHERE id =
#{
epic_issue
[
'id'
]
}
"
)
end
end
end
def
down
execute
(
'UPDATE epic_issues SET position = 1'
)
end
end
db/schema.rb
View file @
a4e6a387
...
...
@@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord
::
Schema
.
define
(
version:
201712
1411525
4
)
do
ActiveRecord
::
Schema
.
define
(
version:
201712
2115474
4
)
do
# These are extensions that must be enabled in order to support this database
enable_extension
"plpgsql"
...
...
@@ -765,7 +765,7 @@ ActiveRecord::Schema.define(version: 20171214115254) do
create_table
"epic_issues"
,
force: :cascade
do
|
t
|
t
.
integer
"epic_id"
,
null:
false
t
.
integer
"issue_id"
,
null:
false
t
.
integer
"position"
,
default:
0
,
null:
false
t
.
integer
"position"
,
default:
1
,
null:
false
end
add_index
"epic_issues"
,
[
"epic_id"
],
name:
"index_epic_issues_on_epic_id"
,
using: :btree
...
...
spec/migrations/set_epic_issue_position_values.rb
0 → 100644
View file @
a4e6a387
require
'spec_helper'
require
Rails
.
root
.
join
(
'db'
,
'migrate'
,
'20171221154744_set_epic_issue_position_values.rb'
)
describe
SetEpicIssuePositionValues
,
:migration
do
let
(
:groups
)
{
table
(
:namespaces
)
}
let
(
:projects
)
{
table
(
:projects
)
}
let
(
:users
)
{
table
(
:users
)
}
let
(
:issues
)
{
table
(
:issues
)
}
let
(
:epics
)
{
table
(
:epics
)
}
let
(
:epic_issues
)
{
table
(
:epic_issues
)
}
let
(
:group
)
{
groups
.
create
(
name:
'group'
,
path:
'group'
)
}
let
(
:project
)
{
projects
.
create
(
name:
'group'
,
namespace_id:
group
.
id
)
}
let
(
:user
)
{
users
.
create
(
username:
'User'
)
}
let
(
:epic1
)
{
epics
.
create
(
title:
'Epic 1'
,
title_html:
'Epic 1'
,
group_id:
group
.
id
,
author_id:
user
.
id
,
iid:
1
)
}
let
(
:epic2
)
{
epics
.
create
(
title:
'Epic 1'
,
title_html:
'Epic 1'
,
group_id:
group
.
id
,
author_id:
user
.
id
,
iid:
1
)
}
let
(
:issue1
)
{
issues
.
create
(
title:
'Issue 1'
,
title_html:
'Issue 1'
,
project_id:
project
.
id
,
author_id:
user
.
id
)
}
let
(
:issue2
)
{
issues
.
create
(
title:
'Issue 2'
,
title_html:
'Issue 1'
,
project_id:
project
.
id
,
author_id:
user
.
id
)
}
let
(
:issue3
)
{
issues
.
create
(
title:
'Issue 3'
,
title_html:
'Issue 1'
,
project_id:
project
.
id
,
author_id:
user
.
id
)
}
let
(
:issue4
)
{
issues
.
create
(
title:
'Issue 4'
,
title_html:
'Issue 1'
,
project_id:
project
.
id
,
author_id:
user
.
id
)
}
let
(
:issue5
)
{
issues
.
create
(
title:
'Issue 5'
,
title_html:
'Issue 1'
,
project_id:
project
.
id
,
author_id:
user
.
id
)
}
let!
(
:epic_issue1
)
{
epic_issues
.
create!
(
epic_id:
epic1
.
id
,
issue_id:
issue1
.
id
)
}
let!
(
:epic_issue2
)
{
epic_issues
.
create!
(
epic_id:
epic1
.
id
,
issue_id:
issue2
.
id
)
}
let!
(
:epic_issue3
)
{
epic_issues
.
create!
(
epic_id:
epic2
.
id
,
issue_id:
issue3
.
id
)
}
let!
(
:epic_issue4
)
{
epic_issues
.
create!
(
epic_id:
epic2
.
id
,
issue_id:
issue4
.
id
)
}
let!
(
:epic_issue5
)
{
epic_issues
.
create!
(
epic_id:
epic2
.
id
,
issue_id:
issue5
.
id
)
}
it
'sets the position value correctly'
do
migrate!
expect
(
epic_issue1
.
reload
.
position
).
to
eq
(
1
)
expect
(
epic_issue2
.
reload
.
position
).
to
eq
(
2
)
expect
(
epic_issue3
.
reload
.
position
).
to
eq
(
1
)
expect
(
epic_issue4
.
reload
.
position
).
to
eq
(
2
)
expect
(
epic_issue5
.
reload
.
position
).
to
eq
(
3
)
end
end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment