#include "DBInt.h"
#include <iostream>

static void dump_data(vector<string>& vs)
{
    int siz = vs.size();
    cout << "(" << siz << ")";
    for (int i=0; i<siz; ++i) cout << " " << vs[i];
    cout << endl;
}

int main (int argc, char *argv[])
{
    if (argc != 9) {
        cerr << "Usage: " << argv[0] << 
            " host user database table id nth what order_by\n";
        return 1;
    }
    const char* host = argv[1];
    const char* user = argv[2];
    const char* db = argv[3];
    const char* table = argv[4];
    int id = atoi(argv[5]);
    int nth = atoi(argv[6]);
    const char* what = argv[7];
    const char* order_by = argv[8];

    DBInt dbi(db,host,user);
    int siz;
    
    cout << "GetNthData():\n";
    vector<string> data;
    dbi.GetNthData(id,nth,table,what,order_by,data);
    dump_data(data);

    cout << endl << endl;
 
    cout << "GetData():\n";
    vector<vector<string> > datav;
    dbi.GetData(id,table,what,order_by,datav);
    siz = datav.size();
    cout << siz << "rows:\n";
    for (int i=0; i<siz; ++i) {
        cout << i << ": ";
        dump_data(datav[i]);
    }

    cout << endl << endl;

    cout << "GetFields():\n";
    data.erase(data.begin(),data.end());
    dbi.GetFields(table,data);
    dump_data(data);
                
    cout << endl << endl;

    cout << "SetData():\n";
    vector<string> vs;
    vs.push_back("\"Fake cross section - delete me\"");
    dbi.SetData(999,"xsecdescr","descr",vs);
    datav.erase(datav.begin(),datav.end());
    dbi.GetData(-1,"xsecdescr","*","",datav);
    siz = datav.size();
    cout << siz << "rows:\n";
    for (int i=0; i<siz; ++i) {
        cout << i << ": ";
        dump_data(datav[i]);
    }



    return 0;
} // end of main()
