From 5e1adca4065c84434b63834db46455f8411a100a Mon Sep 17 00:00:00 2001 From: Alex Irion Date: Thu, 7 Jan 2021 16:11:40 -0700 Subject: [PATCH 1/4] feat(login): drop login from all servers in Ag --- src/AgDatabase.cs | 5 +++++ src/SmoFacade/Server.cs | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/src/AgDatabase.cs b/src/AgDatabase.cs index 45d8c51..4b65bde 100755 --- a/src/AgDatabase.cs +++ b/src/AgDatabase.cs @@ -140,6 +140,11 @@ public IEnumerable AssociatedLogins() return _listener.Primary.Database(Name).Users.Where(u => u.Login != null).Select(u => u.Login.Properties()); } + public void DropLogin(LoginProperties login) + { + _listener.ForEachAgInstance(server => server.DropLogin(login)); + } + /// /// IDisposable implemented for our connection to the primary AG database server. /// diff --git a/src/SmoFacade/Server.cs b/src/SmoFacade/Server.cs index 8c0efe2..cd3cf27 100755 --- a/src/SmoFacade/Server.cs +++ b/src/SmoFacade/Server.cs @@ -46,6 +46,11 @@ public Server(SqlConnectionStringBuilder connectionStringBuilder) : public IEnumerable Logins => _server.Logins.Cast() .Select(l => new Login(l, this)); + public void DropLogin(LoginProperties login) + { + _server.Logins[login.Name].DropIfExists(); + } + public void Dispose() { SqlConnection?.Dispose(); From 19362e80877de7ce2142302f3de9e54a72c1b2f0 Mon Sep 17 00:00:00 2001 From: Alex Irion Date: Thu, 7 Jan 2021 16:50:54 -0700 Subject: [PATCH 2/4] fix(login): dont enumerate sa login --- src/AgDatabase.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/AgDatabase.cs b/src/AgDatabase.cs index 4b65bde..4d3deb3 100755 --- a/src/AgDatabase.cs +++ b/src/AgDatabase.cs @@ -137,7 +137,7 @@ public void CopyLogins(IEnumerable logins) public IEnumerable AssociatedLogins() { - return _listener.Primary.Database(Name).Users.Where(u => u.Login != null).Select(u => u.Login.Properties()); + return _listener.Primary.Database(Name).Users.Where(u => u.Login != null && u.Login.Name != "sa").Select(u => u.Login.Properties()); } public void DropLogin(LoginProperties login) From 7be71d90d1dab70c672ecd695bd167332a1c6146 Mon Sep 17 00:00:00 2001 From: Alex Irion Date: Fri, 8 Jan 2021 11:01:28 -0700 Subject: [PATCH 3/4] fix(review): interface --- src/AgDatabase.cs | 9 +++++++++ src/SmoFacade/Server.cs | 8 ++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/AgDatabase.cs b/src/AgDatabase.cs index 4d3deb3..7e3167f 100755 --- a/src/AgDatabase.cs +++ b/src/AgDatabase.cs @@ -30,6 +30,8 @@ public interface IAgDatabase void CopyLogins(IEnumerable logins); IEnumerable AssociatedLogins(); + void DropLogin(LoginProperties login); + void DropAllLogins(); } @@ -145,6 +147,13 @@ public void DropLogin(LoginProperties login) _listener.ForEachAgInstance(server => server.DropLogin(login)); } + public void DropAllLogins() + { + foreach(var loginProp in AssociatedLogins()) { + DropLogin(loginProp); + } + } + /// /// IDisposable implemented for our connection to the primary AG database server. /// diff --git a/src/SmoFacade/Server.cs b/src/SmoFacade/Server.cs index cd3cf27..ffdd78b 100755 --- a/src/SmoFacade/Server.cs +++ b/src/SmoFacade/Server.cs @@ -46,14 +46,14 @@ public Server(SqlConnectionStringBuilder connectionStringBuilder) : public IEnumerable Logins => _server.Logins.Cast() .Select(l => new Login(l, this)); - public void DropLogin(LoginProperties login) + public void Dispose() { - _server.Logins[login.Name].DropIfExists(); + SqlConnection?.Dispose(); } - public void Dispose() + public void DropLogin(LoginProperties login) { - SqlConnection?.Dispose(); + _server.Logins[login.Name].DropIfExists(); } /// From 62fd1099b00575593c7541d24129c4869aa9c0e0 Mon Sep 17 00:00:00 2001 From: Alex Irion Date: Fri, 8 Jan 2021 11:01:34 -0700 Subject: [PATCH 4/4] fix(review): interface --- src/AgDatabase.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/AgDatabase.cs b/src/AgDatabase.cs index 7e3167f..587999a 100755 --- a/src/AgDatabase.cs +++ b/src/AgDatabase.cs @@ -139,7 +139,8 @@ public void CopyLogins(IEnumerable logins) public IEnumerable AssociatedLogins() { - return _listener.Primary.Database(Name).Users.Where(u => u.Login != null && u.Login.Name != "sa").Select(u => u.Login.Properties()); + return _listener.Primary.Database(Name).Users.Where(u => u.Login != null && u.Login.Name != "sa") + .Select(u => u.Login.Properties()); } public void DropLogin(LoginProperties login) @@ -149,9 +150,7 @@ public void DropLogin(LoginProperties login) public void DropAllLogins() { - foreach(var loginProp in AssociatedLogins()) { - DropLogin(loginProp); - } + foreach(var loginProp in AssociatedLogins()) DropLogin(loginProp); } ///