PageRenderTime 34ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/wheels/model/adapters/MySQL.cfc

http://cfwheels.googlecode.com/
ColdFusion CFScript | 78 lines | 70 code | 8 blank | 0 comment | 0 complexity | 8db1c79d8e8ce7cb03e5b64e4c34d6e1 MD5 | raw file
Possible License(s): Apache-2.0, CPL-1.0
  1. <cfcomponent extends="Base" output="false">
  2. <cffunction name="init" access="public" returntype="any" output="false">
  3. <cfreturn super.init(argumentCollection=arguments)>
  4. </cffunction>
  5. <cffunction name="$generatedKey" returntype="string" access="public" output="false">
  6. <cfreturn "generated_key">
  7. </cffunction>
  8. <cffunction name="$randomOrder" returntype="string" access="public" output="false">
  9. <cfreturn "RAND()">
  10. </cffunction>
  11. <cffunction name="$getType" returntype="string" access="public" output="false">
  12. <cfargument name="type" type="string" required="true">
  13. <cfscript>
  14. var loc = {};
  15. switch(arguments.type)
  16. {
  17. case "bigint": {loc.returnValue = "cf_sql_bigint"; break;}
  18. case "binary": {loc.returnValue = "cf_sql_binary"; break;}
  19. case "bit": case "bool": {loc.returnValue = "cf_sql_bit"; break;}
  20. case "blob": case "tinyblob": case "mediumblob": case "longblob": {loc.returnValue = "cf_sql_blob"; break;}
  21. case "char": {loc.returnValue = "cf_sql_char"; break;}
  22. case "date": {loc.returnValue = "cf_sql_date"; break;}
  23. case "decimal": {loc.returnValue = "cf_sql_decimal"; break;}
  24. case "double": {loc.returnValue = "cf_sql_double"; break;}
  25. case "float": {loc.returnValue = "cf_sql_float"; break;}
  26. case "int": case "mediumint": {loc.returnValue = "cf_sql_integer"; break;}
  27. case "smallint": case "year": {loc.returnValue = "cf_sql_smallint"; break;}
  28. case "time": {loc.returnValue = "cf_sql_time"; break;}
  29. case "datetime": case "timestamp": {loc.returnValue = "cf_sql_timestamp"; break;}
  30. case "tinyint": {loc.returnValue = "cf_sql_tinyint"; break;}
  31. case "varbinary": {loc.returnValue = "cf_sql_varbinary"; break;}
  32. case "varchar": case "text": case "mediumtext": case "longtext": case "tinytext": case "enum": case "set": {loc.returnValue = "cf_sql_varchar"; break;}
  33. }
  34. </cfscript>
  35. <cfreturn loc.returnValue>
  36. </cffunction>
  37. <cffunction name="$query" returntype="struct" access="public" output="false">
  38. <cfargument name="sql" type="array" required="true">
  39. <cfargument name="limit" type="numeric" required="false" default=0>
  40. <cfargument name="offset" type="numeric" required="false" default=0>
  41. <cfargument name="parameterize" type="boolean" required="true">
  42. <cfargument name="$primaryKey" type="string" required="false" default="">
  43. <cfscript>
  44. var loc = {};
  45. arguments.sql = $removeColumnAliasesInOrderClause(arguments.sql);
  46. loc.returnValue = $performQuery(argumentCollection=arguments);
  47. </cfscript>
  48. <cfreturn loc.returnValue>
  49. </cffunction>
  50. <cffunction name="$identitySelect" returntype="any" access="public" output="false">
  51. <cfargument name="queryAttributes" type="struct" required="true">
  52. <cfargument name="result" type="struct" required="true">
  53. <cfargument name="primaryKey" type="string" required="true">
  54. <cfset var loc = {}>
  55. <cfset var query = {}>
  56. <cfset loc.sql = Trim(arguments.result.sql)>
  57. <cfif Left(loc.sql, 11) IS "INSERT INTO" AND NOT StructKeyExists(arguments.result, $generatedKey())>
  58. <cfset loc.startPar = Find("(", loc.sql) + 1>
  59. <cfset loc.endPar = Find(")", loc.sql)>
  60. <cfset loc.columnList = ReplaceList(Mid(loc.sql, loc.startPar, (loc.endPar-loc.startPar)), "#Chr(10)#,#Chr(13)#, ", ",,")>
  61. <cfif NOT ListFindNoCase(loc.columnList, ListFirst(arguments.primaryKey))>
  62. <cfset loc.returnValue = {}>
  63. <cfquery attributeCollection="#arguments.queryAttributes#">SELECT LAST_INSERT_ID() AS lastId</cfquery>
  64. <cfset loc.returnValue[$generatedKey()] = query.name.lastId>
  65. <cfreturn loc.returnValue>
  66. </cfif>
  67. </cfif>
  68. </cffunction>
  69. <cfinclude template="../../plugins/injection.cfm">
  70. </cfcomponent>