// // $Id: MCPFastQueries.m 1056 2009-07-18 10:42:29Z stuart02 $ // // MCPFastQueries.m // MCPKit // // Created by Serge Cohen (serge.cohen@m4x.org) on 03/06/2002. // Copyright (c) 2001 Serge Cohen. All rights reserved. // // Forked by the Sequel Pro team (sequelpro.com), April 2009 // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // More info at // More info at #import "MCPFastQueries.h" #import "MCPResultPlus.h" /** * This actegory is made up to keep the extra methods out or the core of the framework. * * Basicly this is the place to add methods which are useful, but are just wrappers to the methods of the * core (MCPConnection, MCPResult). The purpous being to have a single line call available for current tasks * which otherwise would need a couple of lines and object defined. */ @implementation MCPConnection (MCPFastQueries) /** * Send the query aQuery to the server and retrieve the row id if the table have a autoincrement column. * Returns 0 if nothing have been inserted. */ - (my_ulonglong)insertQuery:(NSString *)query { [self queryString:query]; return [self insertId]; } /** * Send the query aQuery to the server and retrieve the number of affected rows (should work with !{update}, * !{delete}, !{insert} and !{select} type of queries). * * NB: This can also be used with a !{select} query if you are only interested in the number of row complying * with the query; you'll get no chance to get the result from the query, except by sending the query * again (with !{queryString:}) */ - (my_ulonglong)updateQuery:(NSString *)query { [self queryString:query]; return [self affectedRows]; } /** * Get the first field of the first row of the result from the query (aQuery). Should return nil if no object * at all are selected. */ - (id)getFirstFieldFromQuery:(NSString *)query { return [[[self queryString:query] fetchRowAsType:MCPTypeArray] objectAtIndex:0]; } /** * Get the firdst row of the result from the query aQuery, in a collection of type determined by aType * (MCPTypeArray or MCPTypeDictionary) */ - (id) getFirstRowFromQuery:(NSString *)query asType:(MCPReturnType)type { return [[self queryString:query] fetchRowAsType:type]; } /** * Get a bidimensional table of the whole rows of the result from the query aQuery. The type of the result is * choosen by aType, it can be (MCPTypeArray, MCPTypeDictionary, MCPTypeFlippedArray & MCPTypeFlippedDictionary). * Description of the types can be found in method !{fetch2DResultAsType:}. */ - (id)getAllRowsFromQuery:(NSString *)query asType:(MCPReturnType)type { return [[self queryString:query] fetch2DResultAsType:type]; } /** * Get a column (as an NSArray) of the result from the query aQuery. The column is choosen from it's index, * starting from 0. */ - (NSArray *)getQuery:(NSString *)query colWithIndex:(unsigned int)col { return [[self queryString:query] fetchColAtIndex:col]; } /** * Get a column (as an NSArray) of the result from the query aQuery. The column is choosen from it's name. */ - (NSArray *)getQuery:(NSString *)query colWithName:(NSString *)colName { return [[self queryString:query] fetchColWithName:colName]; } @end