Skip to content

Commit f7c7cc3

Browse files
committed
- get/contains using name
#6
1 parent 150b665 commit f7c7cc3

7 files changed

Lines changed: 71 additions & 20 deletions

File tree

Shuttle.Core.Data/.build/package.nuspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<version>{semver}</version>
66
<authors>Eben Roux</authors>
77
<owners>Eben Roux</owners>
8-
<licenseUrl>https://github.com/shuttle/Shuttle.Core.Data/raw/master/LICENSE</licenseUrl>
8+
<license type="expression">BSD-3-Clause</license>
99
<projectUrl>https://github.com/shuttle/Shuttle.Core.Data</projectUrl>
1010
<iconUrl>https://raw.githubusercontent.com/Shuttle/Shuttle.Core.Data/master/.media/logo.png</iconUrl>
1111
<repository type="git" url="https://github.com/Shuttle/Shuttle.Core.Data.git" />

Shuttle.Core.Data/DatabaseContextCache.cs

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,29 @@ public ActiveDatabaseContext Use(IDatabaseContext context)
3737
return new ActiveDatabaseContext(this, current);
3838
}
3939

40-
public bool Contains(string connectionString)
40+
public bool Contains(string name)
4141
{
42-
return DatabaseContexts.Find(candidate => candidate.Connection.ConnectionString.Equals(connectionString, StringComparison.OrdinalIgnoreCase)) != null;
42+
return DatabaseContexts.Find(candidate => candidate.Name.Equals(name, StringComparison.OrdinalIgnoreCase)) != null;
4343
}
4444

45-
public void Add(IDatabaseContext context)
45+
public bool ContainsConnectionString(string connectionString)
46+
{
47+
return DatabaseContexts.Find(candidate => candidate.Connection.ConnectionString.Equals(connectionString, StringComparison.OrdinalIgnoreCase)) != null;
48+
}
49+
50+
public IDatabaseContext GetConnectionString(string connectionString)
51+
{
52+
var result = DatabaseContexts.Find(candidate => candidate.Connection.ConnectionString.Equals(connectionString, StringComparison.OrdinalIgnoreCase));
53+
54+
if (result == null)
55+
{
56+
throw new Exception(string.Format(Resources.DatabaseContextConnectionStringNotFoundException, connectionString));
57+
}
58+
59+
return result;
60+
}
61+
62+
public void Add(IDatabaseContext context)
4663
{
4764
if (Find(context) != null)
4865
{
@@ -75,13 +92,13 @@ public void Remove(IDatabaseContext context)
7592
DatabaseContexts.Remove(candidate);
7693
}
7794

78-
public IDatabaseContext Get(string connectionString)
95+
public IDatabaseContext Get(string name)
7996
{
80-
var result = DatabaseContexts.Find(candidate => candidate.Connection.ConnectionString.Equals(connectionString, StringComparison.OrdinalIgnoreCase));
97+
var result = DatabaseContexts.Find(candidate => candidate.Name.Equals(name, StringComparison.OrdinalIgnoreCase));
8198

8299
if (result == null)
83100
{
84-
throw new Exception(string.Format(Resources.DatabaseContextConnectionStringNotFoundException, DbConnectionExtensions.SecuredConnectionString(connectionString)));
101+
throw new Exception(string.Format(Resources.DatabaseContextNameNotFoundException, name));
85102
}
86103

87104
return result;

Shuttle.Core.Data/DatabaseContextFactory.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ public IDatabaseContext Create(string name)
4343

4444
public IDatabaseContext Create(string providerName, string connectionString)
4545
{
46-
return DatabaseContextCache.Contains(connectionString)
47-
? DatabaseContextCache.Get(connectionString).Suppressed()
46+
return DatabaseContextCache.ContainsConnectionString(connectionString)
47+
? DatabaseContextCache.GetConnectionString(connectionString).Suppressed()
4848
: new DatabaseContext(providerName,
4949
DbConnectionFactory.CreateConnection(providerName, connectionString),
5050
DbCommandFactory);
@@ -54,8 +54,8 @@ public IDatabaseContext Create(string providerName, IDbConnection dbConnection)
5454
{
5555
Guard.AgainstNull(dbConnection, nameof(dbConnection));
5656

57-
return DatabaseContextCache.Contains(dbConnection.ConnectionString)
58-
? DatabaseContextCache.Get(dbConnection.ConnectionString).Suppressed()
57+
return DatabaseContextCache.ContainsConnectionString(dbConnection.ConnectionString)
58+
? DatabaseContextCache.GetConnectionString(dbConnection.ConnectionString).Suppressed()
5959
: new DatabaseContext(providerName, dbConnection, DbCommandFactory);
6060
}
6161

Shuttle.Core.Data/IDatabaseContextCache.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@ public interface IDatabaseContextCache
55
IDatabaseContext Current { get; }
66
ActiveDatabaseContext Use(string name);
77
ActiveDatabaseContext Use(IDatabaseContext context);
8-
bool Contains(string connectionString);
8+
bool Contains(string name);
9+
bool ContainsConnectionString(string connectionString);
10+
IDatabaseContext Get(string name);
11+
IDatabaseContext GetConnectionString(string connectionString);
912
void Add(IDatabaseContext context);
1013
void Remove(IDatabaseContext context);
11-
IDatabaseContext Get(string connectionString);
1214
}
1315
}

Shuttle.Core.Data/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@
3333
[assembly: AssemblyTitle(".NET Standard 2.0")]
3434
#endif
3535

36-
[assembly: AssemblyVersion("10.0.10.0")]
36+
[assembly: AssemblyVersion("11.0.0.0")]
3737
[assembly: AssemblyCopyright("Copyright © Eben Roux 2017")]
3838
[assembly: AssemblyProduct("Shuttle.Core.Data")]
3939
[assembly: AssemblyCompany("Shuttle")]
4040
[assembly: AssemblyConfiguration("Release")]
41-
[assembly: AssemblyInformationalVersion("10.0.10")]
41+
[assembly: AssemblyInformationalVersion("11.0.0")]
4242
[assembly: ComVisible(false)]
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
using System;
2+
3+
namespace Shuttle.Core.Data
4+
{
5+
public class RecordNotFoundException : Exception
6+
{
7+
public RecordNotFoundException(string message) : base(message)
8+
{
9+
}
10+
11+
public static RecordNotFoundException For(string name, object id)
12+
{
13+
return new RecordNotFoundException(
14+
$"Could not find a record for '{name}' with id '{id ?? "(null)"}'.");
15+
}
16+
17+
public static RecordNotFoundException For<T>(object id)
18+
{
19+
return For(typeof(T).Name, id);
20+
}
21+
}
22+
}

Shuttle.Core.Data/ThreadStaticDatabaseContextCache.cs

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,22 @@ public ActiveDatabaseContext Use(IDatabaseContext context)
1818
return GuardedCache().Use(context);
1919
}
2020

21-
public bool Contains(string connectionString)
21+
public bool Contains(string name)
2222
{
23-
return GuardedCache().Contains(connectionString);
23+
return GuardedCache().Contains(name);
2424
}
2525

26-
public void Add(IDatabaseContext context)
26+
public bool ContainsConnectionString(string connectionString)
27+
{
28+
return GuardedCache().ContainsConnectionString(connectionString);
29+
}
30+
31+
public IDatabaseContext GetConnectionString(string connectionString)
32+
{
33+
return GuardedCache().GetConnectionString(connectionString);
34+
}
35+
36+
public void Add(IDatabaseContext context)
2737
{
2838
GuardedCache().Add(context);
2939
}
@@ -33,9 +43,9 @@ public void Remove(IDatabaseContext context)
3343
GuardedCache().Remove(context);
3444
}
3545

36-
public IDatabaseContext Get(string connectionString)
46+
public IDatabaseContext Get(string name)
3747
{
38-
return GuardedCache().Get(connectionString);
48+
return GuardedCache().Get(name);
3949
}
4050

4151
private static DatabaseContextCache GuardedCache()

0 commit comments

Comments
 (0)