//
// $Id$
//
// 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:(NSUInteger)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