#import "DbHandler.h"

@implementation DbHandler

@synthesize dbPath,db;

- (id)init
{
    self = [super init];
    if (self) {
        
    }
    return self;
}

- (id)initWithDbName:(NSString *)dbName
{

    if ([self init]) {
        [self setDatabasePath:dbName];
    }
    return self;
}

-(NSString *)setDatabasePath:(NSString *)dbName
{
    NSString *path = [[NSBundle mainBundle]pathForResource:dbName ofType:@"db"];
    
    NSString *docDirPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    
    NSFileManager *man = [NSFileManager defaultManager];
    
    docDirPath = [docDirPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.db",dbName]];
    
    
    if ( [man fileExistsAtPath:docDirPath]) {
        NSLog(@"file already exists.");
    }
    else
    {
        [man copyItemAtPath:path toPath:docDirPath error:nil];
         NSLog(@"file copied.");
    }
    
    dbPath = [docDirPath copy];
    
    return dbPath;
}

-(void)executeQuery:(NSString *)query
{
    if (sqlite3_open([dbPath UTF8String], &db) == SQLITE_OK) {
        NSLog(@"success sqlite3_open");
        
        if (sqlite3_exec(db, [query UTF8String], nil, nil, nil)) {
             NSLog(@"success sqlite3_exec");
        }
    }
}

-(NSMutableArray *)getList:(NSString *)query
{
    NSMutableArray *arrayMain = [[NSMutableArray alloc]init];
    
        if (sqlite3_open([dbPath UTF8String], &db) == SQLITE_OK) {
             NSLog(@"success sqlite3_open");
            
            sqlite3_stmt *stm;
            
            if (sqlite3_prepare_v2(db, [query UTF8String], -1, &stm, nil)  ==  SQLITE_OK) {
                NSLog(@"success sqlite3_prepare_v2");
                
                while (sqlite3_step(stm) == SQLITE_ROW) {
                    
                    NSMutableArray *arraySub = [[NSMutableArray alloc]init];
                    
                    for (int i = 0; i<sqlite3_column_count(stm); i++) {
                        [arraySub addObject:[NSString stringWithFormat:@"%s",sqlite3_column_text(stm, i)]];
                    }
                    
                    [arrayMain addObject:arraySub];
                }
                
            }
            sqlite3_finalize(stm);
        }
    sqlite3_close(db);
    
    return arrayMain;
}


@end