Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
pleroma
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Maksim
pleroma
Commits
643664d5
Commit
643664d5
authored
Jul 25, 2020
by
Maksim
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added migrate old settings to new
parent
61ef1fca
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
234 additions
and
0 deletions
+234
-0
priv/repo/migrations/20200724133313_move_welcome_settings.exs
.../repo/migrations/20200724133313_move_welcome_settings.exs
+94
-0
test/migrations/20200724133313_move_welcome_settings_test.exs
.../migrations/20200724133313_move_welcome_settings_test.exs
+140
-0
No files found.
priv/repo/migrations/20200724133313_move_welcome_settings.exs
0 → 100644
View file @
643664d5
defmodule
Pleroma
.
Repo
.
Migrations
.
MoveWelcomeSettings
do
use
Ecto
.
Migration
alias
Pleroma
.
ConfigDB
@old_keys
[
:welcome_user_nickname
,
:welcome_message
]
def
up
do
with
{
:ok
,
config
,
{
keep_values
,
move_values
}}
<-
get_old_values
()
do
insert_welcome_settings
(
move_values
)
update_instance_config
(
config
,
keep_values
)
end
end
def
down
do
with
{
:ok
,
welcome_config
,
revert_values
}
<-
get_revert_values
()
do
revert_instance_config
(
revert_values
)
Pleroma
.
Repo
.
delete
(
welcome_config
)
end
end
defp
insert_welcome_settings
([
_
|
_
]
=
values
)
do
unless
String
.
trim
(
values
[
:welcome_message
])
==
""
do
config_values
=
[
direct_message:
%{
enabled:
true
,
sender_nickname:
values
[
:welcome_user_nickname
],
message:
values
[
:welcome_message
]
},
email:
%{
enabled:
false
,
sender:
nil
,
subject:
"Welcome to <%= instance_name %>"
,
html:
"Welcome to <%= instance_name %>"
,
text:
"Welcome to <%= instance_name %>"
}
]
{
:ok
,
_
}
=
%
ConfigDB
{}
|>
ConfigDB
.
changeset
(%{
group:
:pleroma
,
key:
:welcome
,
value:
config_values
})
|>
Pleroma
.
Repo
.
insert
()
end
:ok
end
defp
insert_welcome_settings
(
_
),
do
:
:noop
defp
revert_instance_config
(%{}
=
revert_values
)
do
values
=
[
welcome_user_nickname:
revert_values
[
:sender_nickname
],
welcome_message:
revert_values
[
:message
]
]
ConfigDB
.
update_or_create
(%{
group:
:pleroma
,
key:
:instance
,
value:
values
})
end
defp
revert_instance_config
(
_
),
do
:
:noop
defp
update_instance_config
(
config
,
values
)
do
{
:ok
,
_
}
=
config
|>
ConfigDB
.
changeset
(%{
value:
values
})
|>
Pleroma
.
Repo
.
update
()
:ok
end
defp
get_revert_values
do
config
=
ConfigDB
.
get_by_params
(%{
group:
:pleroma
,
key:
:welcome
})
cond
do
is_nil
(
config
)
->
{
:noop
,
nil
,
nil
}
true
->
{
:ok
,
config
,
config
.
value
[
:direct_message
]}
end
end
defp
get_old_values
do
config
=
ConfigDB
.
get_by_params
(%{
group:
:pleroma
,
key:
:instance
})
cond
do
is_nil
(
config
)
->
{
:noop
,
config
,
{}}
is_binary
(
config
.
value
[
:welcome_message
])
->
{
:ok
,
config
,
{
Keyword
.
drop
(
config
.
value
,
@old_keys
),
Keyword
.
take
(
config
.
value
,
@old_keys
)}}
true
->
{
:ok
,
config
,
{
Keyword
.
drop
(
config
.
value
,
@old_keys
),
[]}}
end
end
end
test/migrations/20200724133313_move_welcome_settings_test.exs
0 → 100644
View file @
643664d5
defmodule
Pleroma
.
Repo
.
Migrations
.
MoveWelcomeSettingsTest
do
use
Pleroma
.
DataCase
import
Pleroma
.
Factory
import
Pleroma
.
Tests
.
Helpers
alias
Pleroma
.
ConfigDB
setup_all
do
:
require_migration
(
"20200724133313_move_welcome_settings"
)
describe
"up/0"
do
test
"converts welcome settings"
,
%{
migration:
migration
}
do
insert
(
:config
,
group:
:pleroma
,
key:
:instance
,
value:
[
welcome_message:
"Test message"
,
welcome_user_nickname:
"jimm"
,
name:
"Pleroma"
]
)
migration
.
up
()
instance_config
=
ConfigDB
.
get_by_params
(%{
group:
:pleroma
,
key:
:instance
})
welcome_config
=
ConfigDB
.
get_by_params
(%{
group:
:pleroma
,
key:
:welcome
})
assert
instance_config
.
value
==
[
name:
"Pleroma"
]
assert
welcome_config
.
value
==
[
direct_message:
%{
enabled:
true
,
message:
"Test message"
,
sender_nickname:
"jimm"
},
email:
%{
enabled:
false
,
html:
"Welcome to <%= instance_name %>"
,
sender:
nil
,
subject:
"Welcome to <%= instance_name %>"
,
text:
"Welcome to <%= instance_name %>"
}
]
end
test
"does nothing when message empty"
,
%{
migration:
migration
}
do
insert
(
:config
,
group:
:pleroma
,
key:
:instance
,
value:
[
welcome_message:
""
,
welcome_user_nickname:
"jimm"
,
name:
"Pleroma"
]
)
migration
.
up
()
instance_config
=
ConfigDB
.
get_by_params
(%{
group:
:pleroma
,
key:
:instance
})
refute
ConfigDB
.
get_by_params
(%{
group:
:pleroma
,
key:
:welcome
})
assert
instance_config
.
value
==
[
name:
"Pleroma"
]
end
test
"does nothing when welcome_message not set"
,
%{
migration:
migration
}
do
insert
(
:config
,
group:
:pleroma
,
key:
:instance
,
value:
[
welcome_user_nickname:
"jimm"
,
name:
"Pleroma"
]
)
migration
.
up
()
instance_config
=
ConfigDB
.
get_by_params
(%{
group:
:pleroma
,
key:
:instance
})
refute
ConfigDB
.
get_by_params
(%{
group:
:pleroma
,
key:
:welcome
})
assert
instance_config
.
value
==
[
name:
"Pleroma"
]
end
end
describe
"down/0"
do
test
"revert new settings to old when instance setting not exists"
,
%{
migration:
migration
}
do
insert
(
:config
,
group:
:pleroma
,
key:
:welcome
,
value:
[
direct_message:
%{
enabled:
true
,
message:
"Test message"
,
sender_nickname:
"jimm"
},
email:
%{
enabled:
false
,
html:
"Welcome to <%= instance_name %>"
,
sender:
nil
,
subject:
"Welcome to <%= instance_name %>"
,
text:
"Welcome to <%= instance_name %>"
}
]
)
migration
.
down
()
refute
ConfigDB
.
get_by_params
(%{
group:
:pleroma
,
key:
:welcome
})
instance_config
=
ConfigDB
.
get_by_params
(%{
group:
:pleroma
,
key:
:instance
})
assert
instance_config
.
value
==
[
welcome_user_nickname:
"jimm"
,
welcome_message:
"Test message"
]
end
test
"revert new settings to old when instance setting exists"
,
%{
migration:
migration
}
do
insert
(
:config
,
group:
:pleroma
,
key:
:instance
,
value:
[
name:
"Pleroma App"
])
insert
(
:config
,
group:
:pleroma
,
key:
:welcome
,
value:
[
direct_message:
%{
enabled:
true
,
message:
"Test message"
,
sender_nickname:
"jimm"
},
email:
%{
enabled:
false
,
html:
"Welcome to <%= instance_name %>"
,
sender:
nil
,
subject:
"Welcome to <%= instance_name %>"
,
text:
"Welcome to <%= instance_name %>"
}
]
)
migration
.
down
()
refute
ConfigDB
.
get_by_params
(%{
group:
:pleroma
,
key:
:welcome
})
instance_config
=
ConfigDB
.
get_by_params
(%{
group:
:pleroma
,
key:
:instance
})
assert
instance_config
.
value
==
[
name:
"Pleroma App"
,
welcome_user_nickname:
"jimm"
,
welcome_message:
"Test message"
]
end
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