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
0
Merge Requests
0
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
Jérome Perrin
gitlab-ce
Commits
cc322603
Commit
cc322603
authored
Jun 13, 2016
by
James Lopez
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added comments to import export reader class
parent
069bc264
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
29 additions
and
0 deletions
+29
-0
lib/gitlab/import_export/import_export_reader.rb
lib/gitlab/import_export/import_export_reader.rb
+29
-0
No files found.
lib/gitlab/import_export/import_export_reader.rb
View file @
cc322603
...
@@ -11,6 +11,8 @@ module Gitlab
...
@@ -11,6 +11,8 @@ module Gitlab
methods:
config_hash
[
:methods
])
methods:
config_hash
[
:methods
])
end
end
# Outputs a hash in the format described here: http://api.rubyonrails.org/classes/ActiveModel/Serializers/JSON.html
# for outputting a project in JSON format, including its relations and sub relations.
def
project_tree
def
project_tree
@attributes_finder
.
find_included
(
:project
).
merge
(
include:
build_hash
(
@tree
))
@attributes_finder
.
find_included
(
:project
).
merge
(
include:
build_hash
(
@tree
))
rescue
=>
e
rescue
=>
e
...
@@ -20,6 +22,9 @@ module Gitlab
...
@@ -20,6 +22,9 @@ module Gitlab
private
private
# Builds a hash in the format described here: http://api.rubyonrails.org/classes/ActiveModel/Serializers/JSON.html
#
# +model_list+ - List of models as a relation tree to be included in the generated JSON, from the _import_export.yml_ file
def
build_hash
(
model_list
)
def
build_hash
(
model_list
)
model_list
.
map
do
|
model_objects
|
model_list
.
map
do
|
model_objects
|
if
model_objects
.
is_a?
(
Hash
)
if
model_objects
.
is_a?
(
Hash
)
...
@@ -30,6 +35,10 @@ module Gitlab
...
@@ -30,6 +35,10 @@ module Gitlab
end
end
end
end
# Called when the model is actually a hash containing other relations (more models)
# Returns the config in the right format for calling +to_json+
# +model_object_hash+ - A model relationship such as:
# {:merge_requests=>[:merge_request_diff, :notes]}
def
build_json_config_hash
(
model_object_hash
)
def
build_json_config_hash
(
model_object_hash
)
@json_config_hash
=
{}
@json_config_hash
=
{}
...
@@ -44,6 +53,11 @@ module Gitlab
...
@@ -44,6 +53,11 @@ module Gitlab
@json_config_hash
@json_config_hash
end
end
# If the model is a hash, process the sub_models, which could also be hashes
# If there is a list, add to an existing array, otherwise use hash syntax
# +current_key+ main model that will be a key in the hash
# +model_object+ model or list of models to include in the hash
def
process_sub_model
(
current_key
,
model_object
)
def
process_sub_model
(
current_key
,
model_object
)
sub_model_json
=
build_json_config_hash
(
model_object
).
dup
sub_model_json
=
build_json_config_hash
(
model_object
).
dup
@json_config_hash
.
slice!
(
current_key
)
@json_config_hash
.
slice!
(
current_key
)
...
@@ -55,6 +69,9 @@ module Gitlab
...
@@ -55,6 +69,9 @@ module Gitlab
end
end
end
end
# Creates or adds to an existing hash an individual model or list
# +current_key+ main model that will be a key in the hash
# +model_object+ model or list of models to include in the hash
def
handle_model_object
(
current_key
,
model_object
)
def
handle_model_object
(
current_key
,
model_object
)
if
@json_config_hash
[
current_key
]
if
@json_config_hash
[
current_key
]
add_model_value
(
current_key
,
model_object
)
add_model_value
(
current_key
,
model_object
)
...
@@ -63,6 +80,10 @@ module Gitlab
...
@@ -63,6 +80,10 @@ module Gitlab
end
end
end
end
# Constructs a new hash that will hold the configuration for that particular object
# It may include exceptions or other attribute detail configuration, parsed by +@attributes_finder+
# +current_key+ main model that will be a key in the hash
# +value+ existing model to be included in the hash
def
create_model_value
(
current_key
,
value
)
def
create_model_value
(
current_key
,
value
)
parsed_hash
=
{
include:
value
}
parsed_hash
=
{
include:
value
}
...
@@ -72,12 +93,20 @@ module Gitlab
...
@@ -72,12 +93,20 @@ module Gitlab
@json_config_hash
[
current_key
]
=
parsed_hash
@json_config_hash
[
current_key
]
=
parsed_hash
end
end
# Adds new model configuration to an existing hash with key +current_key+
# It may include exceptions or other attribute detail configuration, parsed by +@attributes_finder+
# +current_key+ main model that will be a key in the hash
# +value+ existing model to be included in the hash
def
add_model_value
(
current_key
,
value
)
def
add_model_value
(
current_key
,
value
)
@attributes_finder
.
parse
(
value
)
{
|
hash
|
value
=
{
value
=>
hash
}
}
@attributes_finder
.
parse
(
value
)
{
|
hash
|
value
=
{
value
=>
hash
}
}
old_values
=
@json_config_hash
[
current_key
][
:include
]
old_values
=
@json_config_hash
[
current_key
][
:include
]
@json_config_hash
[
current_key
][
:include
]
=
([
old_values
]
+
[
value
]).
compact
.
flatten
@json_config_hash
[
current_key
][
:include
]
=
([
old_values
]
+
[
value
]).
compact
.
flatten
end
end
# Construct a new hash or merge with an existing one a model configuration
# This is to fulfil +to_json+ requirements.
# +value+ existing model to be included in the hash
# +hash+ hash containing configuration generated mainly from +@attributes_finder+
def
hash_or_merge
(
value
,
hash
)
def
hash_or_merge
(
value
,
hash
)
value
.
is_a?
(
Hash
)
?
value
.
merge
(
hash
)
:
{
value
=>
hash
}
value
.
is_a?
(
Hash
)
?
value
.
merge
(
hash
)
:
{
value
=>
hash
}
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