Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit 5b52f6f

Browse files
committed
DRY code by collapsing GetValueFn<T> into ConvertDbValue
1 parent f0aa42a commit 5b52f6f

File tree

5 files changed

+132
-267
lines changed

5 files changed

+132
-267
lines changed

src/ServiceStack.OrmLite.Oracle/OracleOrmLiteDialectProvider.cs

Lines changed: 4 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -116,19 +116,19 @@ public override long InsertAndGetLastInsertId<T>(IDbCommand dbCmd)
116116
return GetLastInsertId(dbCmd);
117117
}
118118

119-
public override void SetDbValue(FieldDefinition fieldDef, IDataReader dataReader, int colIndex, object instance)
119+
public override void SetDbValue(FieldDefinition fieldDef, IDataReader reader, int colIndex, object instance)
120120
{
121-
if (HandledDbNullValue(fieldDef, dataReader, colIndex, instance)) return;
121+
if (HandledDbNullValue(fieldDef, reader, colIndex, instance)) return;
122122

123123
object convertedValue;
124124
if (fieldDef.FieldType == typeof(DateTimeOffset))
125125
{
126126
SetOracleTimestampTzFormat();
127-
convertedValue = ConvertTimestampTzToDateTimeOffset(dataReader, colIndex);
127+
convertedValue = ConvertTimestampTzToDateTimeOffset(reader, colIndex);
128128
}
129129
else
130130
{
131-
var value = dataReader.GetValue(colIndex);
131+
var value = reader.GetValue(colIndex);
132132
convertedValue = ConvertDbValue(value, fieldDef.FieldType);
133133
}
134134
try
@@ -179,53 +179,6 @@ public override object ConvertDbValue(object value, Type type)
179179
return base.ConvertDbValue(value, type);
180180
}
181181

182-
public override GetValueDelegate GetValueFn<T>(IDataRecord reader)
183-
{
184-
var nullableType = Nullable.GetUnderlyingType(typeof(T));
185-
if (nullableType == null)
186-
{
187-
if (typeof(T) == typeof(Guid))
188-
{
189-
if (CompactGuid)
190-
{
191-
return i =>
192-
{
193-
var guid = reader.GetValue(i);
194-
return new Guid((byte[])guid);
195-
};
196-
}
197-
return i =>
198-
{
199-
var guid = reader.GetValue(i);
200-
return new Guid(guid.ToString());
201-
};
202-
}
203-
}
204-
else
205-
{
206-
if (typeof (T) == typeof (Guid))
207-
{
208-
if (CompactGuid)
209-
{
210-
return i =>
211-
{
212-
if (reader.IsDBNull(i)) return null;
213-
var guid = reader.GetValue(i);
214-
return new Guid((Byte[])guid);
215-
};
216-
}
217-
return i =>
218-
{
219-
if (reader.IsDBNull(i)) return null;
220-
var guid = reader.GetValue(i);
221-
return new Guid(guid.ToString());
222-
};
223-
}
224-
}
225-
226-
return base.GetValueFn<T>(reader);
227-
}
228-
229182
public override string GetQuotedValue(object value, Type fieldType)
230183
{
231184
if (value == null) return "NULL";

src/ServiceStack.OrmLite.Sqlite/SqliteOrmLiteDialectProviderBase.cs

Lines changed: 7 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -114,35 +114,17 @@ public override object ConvertDbValue(object value, Type type)
114114
return intVal != 0;
115115
}
116116

117-
if (type == typeof(DateTimeOffset))
118-
{
119-
var moment = DateTimeOffset.Parse((string)value, null, DateTimeStyles.RoundtripKind);
120-
return moment;
121-
}
122-
123-
try
124-
{
125-
return base.ConvertDbValue(value, type);
126-
}
127-
catch (Exception ex)
128-
{
129-
throw;
130-
}
131-
}
132-
133-
public override void SetParameter(FieldDefinition fieldDef, IDbDataParameter p)
134-
{
135-
base.SetParameter(fieldDef, p);
117+
return base.ConvertDbValue(value, type);
136118
}
137119

138-
public override void SetDbValue(FieldDefinition fieldDef, IDataReader dataReader, int colIndex, object instance)
120+
public override void SetDbValue(FieldDefinition fieldDef, IDataReader reader, int colIndex, object instance)
139121
{
140-
if (HandledDbNullValue(fieldDef, dataReader, colIndex, instance)) return;
122+
if (HandledDbNullValue(fieldDef, reader, colIndex, instance)) return;
141123

142124
var fieldType = Nullable.GetUnderlyingType(fieldDef.FieldType) ?? fieldDef.FieldType;
143125
if (fieldType == typeof(Guid))
144126
{
145-
var guidStr = dataReader.GetString(colIndex);
127+
var guidStr = reader.GetString(colIndex);
146128
var guidValue = new Guid(guidStr);
147129

148130
fieldDef.SetValueFn(instance, guidValue);
@@ -151,20 +133,20 @@ public override void SetDbValue(FieldDefinition fieldDef, IDataReader dataReader
151133
{
152134
try
153135
{
154-
var dbValue = dataReader.GetDateTime(colIndex);
136+
var dbValue = reader.GetDateTime(colIndex);
155137

156138
fieldDef.SetValueFn(instance, dbValue);
157139
}
158140
catch (Exception)
159141
{
160-
var dateStr = dataReader.GetString(colIndex);
142+
var dateStr = reader.GetString(colIndex);
161143
var dateValue = DateTimeSerializer.ParseShortestXsdDateTime(dateStr);
162144
fieldDef.SetValueFn(instance, dateValue);
163145
}
164146
}
165147
else
166148
{
167-
base.SetDbValue(fieldDef, dataReader, colIndex, instance);
149+
base.SetDbValue(fieldDef, reader, colIndex, instance);
168150
}
169151
}
170152

src/ServiceStack.OrmLite/IOrmLiteDialectProvider.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,10 @@ public interface IOrmLiteDialectProvider
3737
/// <returns></returns>
3838
string GetQuotedValue(string paramValue);
3939

40-
void SetDbValue(FieldDefinition fieldDef, IDataReader dataReader, int colIndex, object instance);
40+
void SetDbValue(FieldDefinition fieldDef, IDataReader reader, int colIndex, object instance);
4141

4242
object ConvertDbValue(object value, Type type);
4343

44-
GetValueDelegate GetValueFn<T>(IDataRecord reader);
45-
4644
string GetQuotedValue(object value, Type fieldType);
4745

4846
IDbConnection CreateConnection(string filePath, Dictionary<string, string> options);

0 commit comments

Comments
 (0)