database-exporter 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +39 -0
  3. data/.travis.yml +6 -0
  4. data/CHANGELOG.md +4 -0
  5. data/Gemfile +7 -0
  6. data/Gemfile.lock +74 -0
  7. data/LICENSE +22 -0
  8. data/README.md +682 -0
  9. data/Rakefile +7 -0
  10. data/bin/database-exporter +48 -0
  11. data/database_exporter.gemspec +34 -0
  12. data/example_data/contentful_model.json +316 -0
  13. data/example_data/contentful_structure.json +89 -0
  14. data/example_data/example_settings.yml +25 -0
  15. data/example_data/mapping.json +119 -0
  16. data/lib/cli.rb +13 -0
  17. data/lib/configuration.rb +69 -0
  18. data/lib/converters/content_types_structure_creator.rb +58 -0
  19. data/lib/converters/contentful_model_to_json.rb +78 -0
  20. data/lib/database/export.rb +74 -0
  21. data/lib/database/modules/json_export.rb +79 -0
  22. data/lib/database/modules/relations_export.rb +270 -0
  23. data/lib/database/modules/utils.rb +20 -0
  24. data/lib/migrator.rb +29 -0
  25. data/lib/version.rb +3 -0
  26. data/spec/fixtures/database/data/assets/image/image_1.json +9 -0
  27. data/spec/fixtures/database/data/assets/image/image_2.json +9 -0
  28. data/spec/fixtures/database/data/assets/image/image_3.json +9 -0
  29. data/spec/fixtures/database/data/assets/image/image_4.json +9 -0
  30. data/spec/fixtures/database/data/collections/comment.json +18 -0
  31. data/spec/fixtures/database/data/collections/job_skills.json +13 -0
  32. data/spec/fixtures/database/data/collections/jobs.json +44 -0
  33. data/spec/fixtures/database/data/collections/profile.json +19 -0
  34. data/spec/fixtures/database/data/collections/user.json +36 -0
  35. data/spec/fixtures/database/data/entries/comment/comment_1.json +9 -0
  36. data/spec/fixtures/database/data/entries/comment/comment_2.json +9 -0
  37. data/spec/fixtures/database/data/entries/comment/comment_3.json +9 -0
  38. data/spec/fixtures/database/data/entries/comment/comment_4.json +9 -0
  39. data/spec/fixtures/database/data/entries/comment/comment_5.json +9 -0
  40. data/spec/fixtures/database/data/entries/job_skills/job_skills_1.json +7 -0
  41. data/spec/fixtures/database/data/entries/job_skills/job_skills_10.json +7 -0
  42. data/spec/fixtures/database/data/entries/job_skills/job_skills_2.json +7 -0
  43. data/spec/fixtures/database/data/entries/job_skills/job_skills_3.json +7 -0
  44. data/spec/fixtures/database/data/entries/job_skills/job_skills_4.json +7 -0
  45. data/spec/fixtures/database/data/entries/job_skills/job_skills_5.json +7 -0
  46. data/spec/fixtures/database/data/entries/job_skills/job_skills_6.json +7 -0
  47. data/spec/fixtures/database/data/entries/job_skills/job_skills_7.json +7 -0
  48. data/spec/fixtures/database/data/entries/job_skills/job_skills_8.json +7 -0
  49. data/spec/fixtures/database/data/entries/job_skills/job_skills_9.json +7 -0
  50. data/spec/fixtures/database/data/entries/jobs/jobs_1.json +56 -0
  51. data/spec/fixtures/database/data/entries/jobs/jobs_2.json +55 -0
  52. data/spec/fixtures/database/data/entries/jobs/jobs_4.json +49 -0
  53. data/spec/fixtures/database/data/entries/profile/profile_1.json +12 -0
  54. data/spec/fixtures/database/data/entries/profile/profile_2.json +12 -0
  55. data/spec/fixtures/database/data/entries/user/user_1.json +24 -0
  56. data/spec/fixtures/database/data/entries/user/user_2.json +20 -0
  57. data/spec/fixtures/database/data/helpers/job_add_id_comments.json +11 -0
  58. data/spec/fixtures/database/data/helpers/job_add_id_job_add_skills.json +24 -0
  59. data/spec/fixtures/database/data/helpers/user_id_job_adds.json +9 -0
  60. data/spec/fixtures/database/data/helpers/user_id_profiles.json +8 -0
  61. data/spec/fixtures/database/data/table_names.json +10 -0
  62. data/spec/fixtures/database/table_names.json +4 -0
  63. data/spec/fixtures/development.sqlite3 +0 -0
  64. data/spec/fixtures/json_responses/transformed_row.json +7 -0
  65. data/spec/fixtures/json_row/row.json +6 -0
  66. data/spec/fixtures/settings/contentful_model.json +316 -0
  67. data/spec/fixtures/settings/contentful_structure.json +89 -0
  68. data/spec/fixtures/settings/contentful_structure_test.json +82 -0
  69. data/spec/fixtures/settings/mapping.json +119 -0
  70. data/spec/fixtures/settings/settings.yml +27 -0
  71. data/spec/lib/configuration_spec.rb +17 -0
  72. data/spec/lib/database/export_spec.rb +49 -0
  73. data/spec/lib/database/json_export_spec.rb +49 -0
  74. data/spec/lib/database/relations_export_spec.rb +201 -0
  75. data/spec/lib/migrator_spec.rb +112 -0
  76. data/spec/spec_helper.rb +12 -0
  77. data/spec/support/db_rows_json.rb +9 -0
  78. data/spec/support/shared_configuration.rb +27 -0
  79. metadata +358 -0
@@ -0,0 +1,19 @@
1
+ {
2
+ "id": "4WFZh4MwC4Mc0EQWAeOY8A",
3
+ "name": "Profile",
4
+ "description": null,
5
+ "displayField": null,
6
+ "fields": [
7
+ {
8
+ "name": "Nickname",
9
+ "id": "nickname",
10
+ "type": "Text"
11
+ },
12
+ {
13
+ "name": "User",
14
+ "id": "user",
15
+ "type": "Entry",
16
+ "link": "Link"
17
+ }
18
+ ]
19
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "id": "1TVvxCqoRq0qUYAOQuOqys",
3
+ "name": "User",
4
+ "description": null,
5
+ "displayField": "first_name",
6
+ "fields": [
7
+ {
8
+ "name": "First_name",
9
+ "id": "first_name",
10
+ "type": "Text"
11
+ },
12
+ {
13
+ "name": "Last_name",
14
+ "id": "last_name",
15
+ "type": "Text"
16
+ },
17
+ {
18
+ "name": "Birthday",
19
+ "id": "birthday",
20
+ "type": "Date"
21
+ },
22
+ {
23
+ "name": "Job_adds",
24
+ "id": "job_adds",
25
+ "type": "Array",
26
+ "link_type": "Entry",
27
+ "link": "Link"
28
+ },
29
+ {
30
+ "name": "Profile",
31
+ "id": "profile",
32
+ "type": "Entry",
33
+ "link": "Link"
34
+ }
35
+ ]
36
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "id": "comment_1",
3
+ "subject": "Title comment 1",
4
+ "content": "Body comment 1",
5
+ "job_add_id": 1,
6
+ "created_at": "2014-12-16T10:26:20+00:00",
7
+ "updated_at": "2014-12-16T10:26:20+00:00",
8
+ "database_id": 1
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "id": "comment_2",
3
+ "subject": "Title comment 2",
4
+ "content": "Body comment 2",
5
+ "job_add_id": 1,
6
+ "created_at": "2014-12-16T10:50:22+00:00",
7
+ "updated_at": "2014-12-16T10:50:22+00:00",
8
+ "database_id": 2
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "id": "comment_3",
3
+ "subject": "Title comment 3",
4
+ "content": "Body comment 3",
5
+ "job_add_id": 1,
6
+ "created_at": "2014-12-16T10:51:19+00:00",
7
+ "updated_at": "2014-12-16T10:51:19+00:00",
8
+ "database_id": 3
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "id": "comment_4",
3
+ "subject": "Comment 1",
4
+ "content": "Comment body 1",
5
+ "job_add_id": 2,
6
+ "created_at": "2014-12-16T10:53:47+00:00",
7
+ "updated_at": "2014-12-16T10:53:47+00:00",
8
+ "database_id": 4
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "id": "comment_5",
3
+ "subject": "Comment 2",
4
+ "content": "Body Comment 2",
5
+ "job_add_id": 2,
6
+ "created_at": "2014-12-16T11:34:46+00:00",
7
+ "updated_at": "2014-12-16T11:34:46+00:00",
8
+ "database_id": 5
9
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "id": "job_skills_1",
3
+ "name": "Commercial awareness",
4
+ "created_at": "2014-12-16T09:45:58+00:00",
5
+ "updated_at": "2014-12-16T09:45:58+00:00",
6
+ "database_id": 1
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "id": "job_skills_10",
3
+ "name": "Confidence",
4
+ "created_at": "2014-12-16T09:47:32+00:00",
5
+ "updated_at": "2014-12-16T09:47:32+00:00",
6
+ "database_id": 10
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "id": "job_skills_2",
3
+ "name": "Communication",
4
+ "created_at": "2014-12-16T09:46:07+00:00",
5
+ "updated_at": "2014-12-16T09:46:07+00:00",
6
+ "database_id": 2
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "id": "job_skills_3",
3
+ "name": "Teamwork",
4
+ "created_at": "2014-12-16T09:46:16+00:00",
5
+ "updated_at": "2014-12-16T09:46:16+00:00",
6
+ "database_id": 3
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "id": "job_skills_4",
3
+ "name": "egotiation and persuasion",
4
+ "created_at": "2014-12-16T09:46:27+00:00",
5
+ "updated_at": "2014-12-16T09:46:27+00:00",
6
+ "database_id": 4
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "id": "job_skills_5",
3
+ "name": "Problem solving",
4
+ "created_at": "2014-12-16T09:46:42+00:00",
5
+ "updated_at": "2014-12-16T09:46:42+00:00",
6
+ "database_id": 5
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "id": "job_skills_6",
3
+ "name": "Leadership",
4
+ "created_at": "2014-12-16T09:46:51+00:00",
5
+ "updated_at": "2014-12-16T09:46:51+00:00",
6
+ "database_id": 6
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "id": "job_skills_7",
3
+ "name": "Organisation",
4
+ "created_at": "2014-12-16T09:47:00+00:00",
5
+ "updated_at": "2014-12-16T09:47:00+00:00",
6
+ "database_id": 7
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "id": "job_skills_8",
3
+ "name": "Perseverance and motivation",
4
+ "created_at": "2014-12-16T09:47:11+00:00",
5
+ "updated_at": "2014-12-16T09:47:11+00:00",
6
+ "database_id": 8
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "id": "job_skills_9",
3
+ "name": "Ability to work under pressure",
4
+ "created_at": "2014-12-16T09:47:23+00:00",
5
+ "updated_at": "2014-12-16T09:47:23+00:00",
6
+ "database_id": 9
7
+ }
@@ -0,0 +1,56 @@
1
+ {
2
+ "id": "jobs_1",
3
+ "name": "First new Job",
4
+ "specification": "Job description",
5
+ "created_at": "2014-12-16T10:26:03+00:00",
6
+ "updated_at": "2014-12-16T10:26:03+00:00",
7
+ "image_id": 3,
8
+ "user_id": 1,
9
+ "database_id": 1,
10
+ "first_name": "FirstName",
11
+ "subjects_comments": [
12
+ "Title comment 1",
13
+ "Title comment 2",
14
+ "Title comment 3"
15
+ ],
16
+ "image": {
17
+ "type": "File",
18
+ "id": "image_3"
19
+ },
20
+ "creator": {
21
+ "type": "Entry",
22
+ "id": "user_1"
23
+ },
24
+ "comments": [
25
+ {
26
+ "type": "comment",
27
+ "id": "comment_1"
28
+ },
29
+ {
30
+ "type": "comment",
31
+ "id": "comment_2"
32
+ },
33
+ {
34
+ "type": "comment",
35
+ "id": "comment_3"
36
+ }
37
+ ],
38
+ "skills": [
39
+ {
40
+ "type": "job_skills",
41
+ "id": "job_skills_1"
42
+ },
43
+ {
44
+ "type": "job_skills",
45
+ "id": "job_skills_3"
46
+ },
47
+ {
48
+ "type": "job_skills",
49
+ "id": "job_skills_8"
50
+ },
51
+ {
52
+ "type": "job_skills",
53
+ "id": "job_skills_10"
54
+ }
55
+ ]
56
+ }
@@ -0,0 +1,55 @@
1
+ {
2
+ "id": "jobs_2",
3
+ "name": "Nice job!",
4
+ "specification": "Nice job description",
5
+ "created_at": "2014-12-16T10:53:28+00:00",
6
+ "updated_at": "2014-12-16T10:53:28+00:00",
7
+ "image_id": 4,
8
+ "user_id": 1,
9
+ "database_id": 2,
10
+ "first_name": "FirstName",
11
+ "subjects_comments": [
12
+ "Comment 1",
13
+ "Comment 2"
14
+ ],
15
+ "image": {
16
+ "type": "File",
17
+ "id": "image_4"
18
+ },
19
+ "creator": {
20
+ "type": "Entry",
21
+ "id": "user_1"
22
+ },
23
+ "comments": [
24
+ {
25
+ "type": "comment",
26
+ "id": "comment_4"
27
+ },
28
+ {
29
+ "type": "comment",
30
+ "id": "comment_5"
31
+ }
32
+ ],
33
+ "skills": [
34
+ {
35
+ "type": "job_skills",
36
+ "id": "job_skills_2"
37
+ },
38
+ {
39
+ "type": "job_skills",
40
+ "id": "job_skills_4"
41
+ },
42
+ {
43
+ "type": "job_skills",
44
+ "id": "job_skills_7"
45
+ },
46
+ {
47
+ "type": "job_skills",
48
+ "id": "job_skills_8"
49
+ },
50
+ {
51
+ "type": "job_skills",
52
+ "id": "job_skills_9"
53
+ }
54
+ ]
55
+ }
@@ -0,0 +1,49 @@
1
+ {
2
+ "id": "jobs_4",
3
+ "name": "Awesome job",
4
+ "specification": "One word - awesome!",
5
+ "created_at": "2014-12-16T12:00:28+00:00",
6
+ "updated_at": "2014-12-16T12:00:28+00:00",
7
+ "image_id": 2,
8
+ "user_id": 2,
9
+ "database_id": 4,
10
+ "first_name": "FirstName User 2",
11
+ "image": {
12
+ "type": "File",
13
+ "id": "image_2"
14
+ },
15
+ "creator": {
16
+ "type": "Entry",
17
+ "id": "user_2"
18
+ },
19
+ "skills": [
20
+ {
21
+ "type": "job_skills",
22
+ "id": "job_skills_2"
23
+ },
24
+ {
25
+ "type": "job_skills",
26
+ "id": "job_skills_3"
27
+ },
28
+ {
29
+ "type": "job_skills",
30
+ "id": "job_skills_4"
31
+ },
32
+ {
33
+ "type": "job_skills",
34
+ "id": "job_skills_7"
35
+ },
36
+ {
37
+ "type": "job_skills",
38
+ "id": "job_skills_8"
39
+ },
40
+ {
41
+ "type": "job_skills",
42
+ "id": "job_skills_9"
43
+ },
44
+ {
45
+ "type": "job_skills",
46
+ "id": "job_skills_10"
47
+ }
48
+ ]
49
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "id": "profile_1",
3
+ "nickname": "Nickname 1",
4
+ "user_id": 1,
5
+ "created_at": "2014-12-16T11:35:31+00:00",
6
+ "updated_at": "2014-12-16T11:35:31+00:00",
7
+ "database_id": 1,
8
+ "user": {
9
+ "type": "Entry",
10
+ "id": "user_1"
11
+ }
12
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "id": "profile_2",
3
+ "nickname": "Nickname 2",
4
+ "user_id": 2,
5
+ "created_at": "2014-12-16T11:35:48+00:00",
6
+ "updated_at": "2014-12-16T11:35:48+00:00",
7
+ "database_id": 2,
8
+ "user": {
9
+ "type": "Entry",
10
+ "id": "user_2"
11
+ }
12
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "id": "user_1",
3
+ "first_name": "FirstName",
4
+ "last_name": "LastName",
5
+ "birthday": "2009-04-16T09:43:00+00:00",
6
+ "created_at": "2014-12-16T09:43:43+00:00",
7
+ "updated_at": "2014-12-16T09:43:43+00:00",
8
+ "database_id": 1,
9
+ "custom_nick": "Nickname 1",
10
+ "profile": {
11
+ "type": "profile",
12
+ "id": "profile_1"
13
+ },
14
+ "job_adds": [
15
+ {
16
+ "type": "jobs",
17
+ "id": "jobs_1"
18
+ },
19
+ {
20
+ "type": "jobs",
21
+ "id": "jobs_2"
22
+ }
23
+ ]
24
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "id": "user_2",
3
+ "first_name": "FirstName User 2",
4
+ "last_name": "LastName User 2",
5
+ "birthday": "2014-12-16T09:43:00+00:00",
6
+ "created_at": "2014-12-16T09:45:08+00:00",
7
+ "updated_at": "2014-12-16T09:45:08+00:00",
8
+ "database_id": 2,
9
+ "custom_nick": "Nickname 2",
10
+ "profile": {
11
+ "type": "profile",
12
+ "id": "profile_2"
13
+ },
14
+ "job_adds": [
15
+ {
16
+ "type": "jobs",
17
+ "id": "jobs_4"
18
+ }
19
+ ]
20
+ }