]> err.no Git - sope/commitdiff
improved SQL generation
authorhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Thu, 24 Feb 2005 01:35:04 +0000 (01:35 +0000)
committerhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Thu, 24 Feb 2005 01:35:04 +0000 (01:35 +0000)
git-svn-id: http://svn.opengroupware.org/SOPE/trunk@595 e4a50df8-12e2-0310-a44c-efbce7f8a7e3

sope-gdl1/SQLite3/ChangeLog
sope-gdl1/SQLite3/NSCalendarDate+SQLiteVal.m
sope-gdl1/SQLite3/NSString+SQLiteVal.m
sope-gdl1/SQLite3/Version

index 92d2ece98ea9e0720914ff8960eceae8abb0f512..9bd11fa8c7c8a2c77e68f7f3d30fec4b4e8582ba 100644 (file)
@@ -1,5 +1,8 @@
 2005-02-24  Helge Hess  <helge.hess@opengroupware.org>
 
+       * NSString+SQLiteVal.m, NSCalendarDate+SQLiteVal.m: improved SQL value
+         generation (v4.5.14)
+
        * v4.5.13
 
        * NSString+SQLiteVal.m: fixed a warning on MacOSX
index 2b4a81291381ebeaeef25c10eac457e0faf75236..b1b8c1a0f77a9edcf342846a0662aa821a58e8f3 100644 (file)
@@ -171,6 +171,24 @@ static NSTimeZone *gmt02 = nil;
   NSTimeZone *serverTimeZone;
   NSString   *format;
   NSString   *val;
+  unsigned len;
+  unichar  c1;
+  
+  if ((len = [_type length]) == 0)
+    c1 = 0;
+  else
+    c1 = [_type characterAtIndex:0];
+
+  if (c1 == 'i' || c1 == 'I') { // INTEGER
+    char buf[64];
+    sprintf(buf, "%d", ((unsigned int)[self timeIntervalSince1970]));
+    return [NSString stringWithCString:buf];
+  }
+  if (c1 == 'r' || c1 == 'R') { // REAL
+    char buf[64]; // TODO: check format
+    sprintf(buf, "%f", [self timeIntervalSince1970]);
+    return [NSString stringWithCString:buf];
+  }
 
   if ((serverTimeZone = [_attribute serverTimeZone]) == nil ) {
     if (DefServerTimezone == nil) {
index 31df0fdddc2b9fc0576031b024c96b013eaa8957..8a407f0635de8a605db31191fd7cf08f9d2b2485 100644 (file)
@@ -56,6 +56,8 @@ static Class EOExprClass = Nil;
   return self;
 }
 
+/* generate SQL value */
+
 - (NSString *)stringValueForSQLite3Type:(NSString *)_type
   attribute:(EOAttribute *)_attribute
 {
@@ -68,9 +70,9 @@ static Class EOExprClass = Nil;
   
   c1 = [_type characterAtIndex:0];
   switch (c1) {
-  case 'c': case 'C':
-  case 'v': case 'V':
-  case 't': case 'T': {
+  case 'c': case 'C': // char
+  case 'v': case 'V': // varchar
+  case 't': case 'T': { // text
     NSString *s;
     id expr;
     
@@ -95,13 +97,15 @@ static Class EOExprClass = Nil;
     [expr release];
     return [s autorelease];
   }
-  case 'm': case 'M': {
-    if (len < 5) {
-      if ([[_type lowercaseString] hasPrefix:@"money"])
-       return [@"$" stringByAppendingString:self];
-    }
-    break;
+  case 'i': case 'I': { // int
+    unsigned char buf[128];
+    sprintf(buf, "%i", [self intValue]);
+    return [NSString stringWithCString:buf];
   }
+  default:
+    NSLog(@"WARNING(%s): return string as is for type %@", 
+         __PRETTY_FUNCTION__, _type);
+    break;
   }
   return self;
 }
index 76aa6eb9f8fdde55c758b926567fd4e7d30b1f3b..f61be5386e4c1a375b68ef728141c463d6a08a8f 100644 (file)
@@ -1,3 +1,3 @@
 # Version file
 
-SUBMINOR_VERSION:=13
+SUBMINOR_VERSION:=14