// // $Id$ // // PGPostgresTypeBinaryHandler.m // PostgresKit // // Created by Stuart Connolly (stuconnolly.com) on September 28, 2012. // Copyright (c) 2012 Stuart Connolly. All rights reserved. // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, // copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following // conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. #import "PGPostgresTypeBinaryHandler.h" static PGPostgresOid PGPostgresTypeBinaryTypes[] = { PGPostgresOidByteData, 0 }; @implementation PGPostgresTypeBinaryHandler @synthesize row = _row; @synthesize type = _type; @synthesize column = _column; @synthesize result = _result; #pragma mark - #pragma mark Protocol Implementation - (PGPostgresOid *)remoteTypes { return PGPostgresTypeBinaryTypes; } - (Class)nativeClass { return [NSString class]; } - (NSArray *)classAliases { return nil; } - (id)objectFromResult { PGbytea data; if (!_result || !_type) return [NSNull null]; if (!PQgetf(_result, _row, PGPostgresResultValueByteA, _column)) return [NSNull null]; if (!data.data || !data.len) return [NSData data]; return [NSData dataWithBytes:data.data length:data.len]; } @end