summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNicolas Schodet2018-10-18 22:39:21 +0200
committerNicolas Schodet2018-10-19 22:11:51 +0200
commit266ad363935a9156aab3289ef8010d2ef0fc98e5 (patch)
tree9f2986536c4366c5118a7f8f54953181dd713018 /src
parent4c39eae490435454623701095d326262862935ae (diff)
Mysql: do not install the server to remove a database/user
Diffstat (limited to 'src')
-rw-r--r--src/Propellor/Property/Mysql.hs22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/Propellor/Property/Mysql.hs b/src/Propellor/Property/Mysql.hs
index f7639a29..37f0d28b 100644
--- a/src/Propellor/Property/Mysql.hs
+++ b/src/Propellor/Property/Mysql.hs
@@ -97,17 +97,23 @@ installed = install <!> remove
remove = Apt.removed server
server = ["default-mysql-server"]
+-- | Check whether server is installed.
+isInstalled :: IO Bool
+isInstalled = Apt.isInstalled server
+ where
+ server = "default-mysql-server"
+
-- | Create a database if it does not exist. When reverted, remove the
-- database.
-databaseExists :: Database -> RevertableProperty DebianLike DebianLike
+databaseExists :: Database -> RevertableProperty DebianLike UnixLike
databaseExists (Database dbname) =
setup <!> cleanup
where
setup :: Property DebianLike
setup = setup' `requires` installed
- cleanup :: Property DebianLike
- cleanup = cleanup' `requires` installed
+ cleanup :: Property UnixLike
+ cleanup = check isInstalled $ cleanup'
-- Test for database existance and create it if needed.
setup' :: Property UnixLike
@@ -151,7 +157,7 @@ userGrantedOnDatabase
-> Database
-> [Privilege]
-> c
- -> RevertableProperty (HasInfo + DebianLike) DebianLike
+ -> RevertableProperty (HasInfo + DebianLike) UnixLike
userGrantedOnDatabase user@(User username) (Database dbname) privs context =
userGranted' user privs context setupDesc setupSql userGrants
where
@@ -175,7 +181,7 @@ userGranted
=> User
-> [Privilege]
-> c
- -> RevertableProperty (HasInfo + DebianLike) DebianLike
+ -> RevertableProperty (HasInfo + DebianLike) UnixLike
userGranted user@(User username) privs context =
userGranted' user privs context setupDesc setupSql userGrants
where
@@ -198,15 +204,15 @@ userGranted'
-> String
-> (String -> String -> String -> String)
-> (String -> String -> String -> String)
- -> RevertableProperty (HasInfo + DebianLike) DebianLike
+ -> RevertableProperty (HasInfo + DebianLike) UnixLike
userGranted' (User username) privs context setupDesc setupSql userGrants =
setup <!> cleanup
where
setup :: Property (HasInfo + DebianLike)
setup = setup' `requires` installed
- cleanup :: Property DebianLike
- cleanup = cleanup' `requires` installed
+ cleanup :: Property UnixLike
+ cleanup = check isInstalled $ cleanup'
-- Check user grants and reset them if needed.
setup' :: Property (HasInfo + UnixLike)