Navigation Menu

Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

review carefully before accepting. using this in a project but otherwise not well tested. #96

Closed
wants to merge 1 commit into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
34 changes: 17 additions & 17 deletions Massive.cs
Expand Up @@ -185,7 +185,7 @@ public class DynamicModel : DynamicObject {
public IEnumerable<dynamic> Schema { public IEnumerable<dynamic> Schema {
get { get {
if (_schema == null) if (_schema == null)
_schema = Query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @0", TableName); _schema = Query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = [@0]", TableName);
return _schema; return _schema;
} }
} }
Expand Down Expand Up @@ -307,7 +307,7 @@ public class DynamicModel : DynamicObject {
return Query(string.Format(sql, columns, TableName), args); return Query(string.Format(sql, columns, TableName), args);
} }
private static string BuildSelect(string where, string orderBy, int limit) { private static string BuildSelect(string where, string orderBy, int limit) {
string sql = limit > 0 ? "SELECT TOP " + limit + " {0} FROM {1} " : "SELECT {0} FROM {1} "; string sql = limit > 0 ? "SELECT TOP " + limit + " {0} FROM [{1}] " : "SELECT {0} FROM [{1}] ";
if (!string.IsNullOrEmpty(where)) if (!string.IsNullOrEmpty(where))
sql += where.Trim().StartsWith("where", StringComparison.OrdinalIgnoreCase) ? where : "WHERE " + where; sql += where.Trim().StartsWith("where", StringComparison.OrdinalIgnoreCase) ? where : "WHERE " + where;
if (!String.IsNullOrEmpty(orderBy)) if (!String.IsNullOrEmpty(orderBy))
Expand All @@ -320,7 +320,7 @@ public class DynamicModel : DynamicObject {
/// </summary> /// </summary>
public virtual dynamic Paged(string where = "", string orderBy = "", string columns = "*", int pageSize = 20, int currentPage = 1, params object[] args) { public virtual dynamic Paged(string where = "", string orderBy = "", string columns = "*", int pageSize = 20, int currentPage = 1, params object[] args) {
dynamic result = new ExpandoObject(); dynamic result = new ExpandoObject();
var countSQL = string.Format("SELECT COUNT({0}) FROM {1} ", PrimaryKeyField, TableName); var countSQL = string.Format("SELECT COUNT({0}) FROM [{1}] ", PrimaryKeyField, TableName);
if (String.IsNullOrEmpty(orderBy)) if (String.IsNullOrEmpty(orderBy))
orderBy = PrimaryKeyField; orderBy = PrimaryKeyField;


Expand All @@ -329,7 +329,7 @@ public class DynamicModel : DynamicObject {
where = "WHERE " + where; where = "WHERE " + where;
} }
} }
var sql = string.Format("SELECT {0} FROM (SELECT ROW_NUMBER() OVER (ORDER BY {2}) AS Row, {0} FROM {3} {4}) AS Paged ", columns, pageSize, orderBy, TableName, where); var sql = string.Format("SELECT {0} FROM (SELECT ROW_NUMBER() OVER (ORDER BY {2}) AS Row, {0} FROM [{3}] {4}) AS Paged ", columns, pageSize, orderBy, TableName, where);
var pageStart = (currentPage - 1) * pageSize; var pageStart = (currentPage - 1) * pageSize;
sql += string.Format(" WHERE Row > {0} AND Row <={1}", pageStart, (pageStart + pageSize)); sql += string.Format(" WHERE Row > {0} AND Row <={1}", pageStart, (pageStart + pageSize));
countSQL += where; countSQL += where;
Expand All @@ -344,14 +344,14 @@ public class DynamicModel : DynamicObject {
/// Returns a single row from the database /// Returns a single row from the database
/// </summary> /// </summary>
public virtual dynamic Single(string where, params object[] args) { public virtual dynamic Single(string where, params object[] args) {
var sql = string.Format("SELECT * FROM {0} WHERE {1}", TableName, where); var sql = string.Format("SELECT * FROM [{0}] WHERE {1}", TableName, where);
return Query(sql, args).FirstOrDefault(); return Query(sql, args).FirstOrDefault();
} }
/// <summary> /// <summary>
/// Returns a single row from the database /// Returns a single row from the database
/// </summary> /// </summary>
public virtual dynamic Single(object key, string columns = "*") { public virtual dynamic Single(object key, string columns = "*") {
var sql = string.Format("SELECT {0} FROM {1} WHERE {2} = @0", columns, TableName, PrimaryKeyField); var sql = string.Format("SELECT {0} FROM [{1}] WHERE {2} = @0", columns, TableName, PrimaryKeyField);
return Query(sql, key).FirstOrDefault(); return Query(sql, key).FirstOrDefault();
} }
/// <summary> /// <summary>
Expand All @@ -360,7 +360,7 @@ public class DynamicModel : DynamicObject {
public virtual IDictionary<string, object> KeyValues(string orderBy = "") { public virtual IDictionary<string, object> KeyValues(string orderBy = "") {
if (String.IsNullOrEmpty(DescriptorField)) if (String.IsNullOrEmpty(DescriptorField))
throw new InvalidOperationException("There's no DescriptorField set - do this in your constructor to describe the text value you want to see"); throw new InvalidOperationException("There's no DescriptorField set - do this in your constructor to describe the text value you want to see");
var sql = string.Format("SELECT {0},{1} FROM {2} ", PrimaryKeyField, DescriptorField, TableName); var sql = string.Format("SELECT {0},{1} FROM [{2}] ", PrimaryKeyField, DescriptorField, TableName);
if (!String.IsNullOrEmpty(orderBy)) if (!String.IsNullOrEmpty(orderBy))
sql += "ORDER BY " + orderBy; sql += "ORDER BY " + orderBy;
return (IDictionary<string, object>)Query(sql); return (IDictionary<string, object>)Query(sql);
Expand Down Expand Up @@ -396,7 +396,7 @@ public class DynamicModel : DynamicObject {
var settings = (IDictionary<string, object>)expando; var settings = (IDictionary<string, object>)expando;
var sbKeys = new StringBuilder(); var sbKeys = new StringBuilder();
var sbVals = new StringBuilder(); var sbVals = new StringBuilder();
var stub = "INSERT INTO {0} ({1}) \r\n VALUES ({2})"; var stub = "INSERT INTO [{0}] ({1}) \r\n VALUES ({2})";
result = CreateCommand(stub, null); result = CreateCommand(stub, null);
int counter = 0; int counter = 0;
foreach (var item in settings) { foreach (var item in settings) {
Expand Down Expand Up @@ -444,7 +444,7 @@ public class DynamicModel : DynamicObject {
/// Removes one or more records from the DB according to the passed-in WHERE /// Removes one or more records from the DB according to the passed-in WHERE
/// </summary> /// </summary>
public virtual DbCommand CreateDeleteCommand(string where = "", object key = null, params object[] args) { public virtual DbCommand CreateDeleteCommand(string where = "", object key = null, params object[] args) {
var sql = string.Format("DELETE FROM {0} ", TableName); var sql = string.Format("DELETE FROM [{0}] ", TableName);
if (key != null) { if (key != null) {
sql += string.Format("WHERE {0}=@0", PrimaryKeyField); sql += string.Format("WHERE {0}=@0", PrimaryKeyField);
args = new object[] { key }; args = new object[] { key };
Expand Down Expand Up @@ -558,7 +558,7 @@ public class DynamicModel : DynamicObject {
return Count(TableName); return Count(TableName);
} }
public int Count(string tableName, string where="") { public int Count(string tableName, string where="") {
return (int)Scalar("SELECT COUNT(*) FROM " + tableName+" "+where); return (int)Scalar("SELECT COUNT(*) FROM [" + tableName+"] "+where);
} }


/// <summary> /// <summary>
Expand Down Expand Up @@ -608,27 +608,27 @@ public class DynamicModel : DynamicObject {
} }
//probably a bit much here but... yeah this whole thing needs to be refactored... //probably a bit much here but... yeah this whole thing needs to be refactored...
if (op.ToLower() == "count") { if (op.ToLower() == "count") {
result = Scalar("SELECT COUNT(*) FROM " + TableName + where, whereArgs.ToArray()); result = Scalar("SELECT COUNT(*) FROM [" + TableName + "]" + where, whereArgs.ToArray());
} else if (op.ToLower() == "sum") { } else if (op.ToLower() == "sum") {
result = Scalar("SELECT SUM(" + columns + ") FROM " + TableName + where, whereArgs.ToArray()); result = Scalar("SELECT SUM(" + columns + ") FROM [" + TableName + "] " + where, whereArgs.ToArray());
} else if (op.ToLower() == "max") { } else if (op.ToLower() == "max") {
result = Scalar("SELECT MAX(" + columns + ") FROM " + TableName + where, whereArgs.ToArray()); result = Scalar("SELECT MAX(" + columns + ") FROM [" + TableName + "] " + where, whereArgs.ToArray());
} else if (op.ToLower() == "min") { } else if (op.ToLower() == "min") {
result = Scalar("SELECT MIN(" + columns + ") FROM " + TableName + where, whereArgs.ToArray()); result = Scalar("SELECT MIN(" + columns + ") FROM [" + TableName + "] " + where, whereArgs.ToArray());
} else if (op.ToLower() == "avg") { } else if (op.ToLower() == "avg") {
result = Scalar("SELECT AVG(" + columns + ") FROM " + TableName + where, whereArgs.ToArray()); result = Scalar("SELECT AVG(" + columns + ") FROM [" + TableName + "] " + where, whereArgs.ToArray());
} else { } else {


//build the SQL //build the SQL
sql = "SELECT TOP 1 " + columns + " FROM " + TableName + where; sql = "SELECT TOP 1 " + columns + " FROM [" + TableName + "] " + where;
var justOne = op.StartsWith("First") || op.StartsWith("Last") || op.StartsWith("Get") || op.StartsWith("Single"); var justOne = op.StartsWith("First") || op.StartsWith("Last") || op.StartsWith("Get") || op.StartsWith("Single");


//Be sure to sort by DESC on the PK (PK Sort is the default) //Be sure to sort by DESC on the PK (PK Sort is the default)
if (op.StartsWith("Last")) { if (op.StartsWith("Last")) {
orderBy = orderBy + " DESC "; orderBy = orderBy + " DESC ";
} else { } else {
//default to multiple //default to multiple
sql = "SELECT " + columns + " FROM " + TableName + where; sql = "SELECT " + columns + " FROM [" + TableName + "] " + where;
} }


if (justOne) { if (justOne) {
Expand Down