var _ = require('underscore')._,
    databank = require('databank');

var api = function(dbot) {
    var api = {
        'getUserStats': function(id, callback) {
            this.db.read('user_stats', id, function(err, uStats) {
                callback(uStats); 
            });
        },

        'createUserStats': function(id, callback) {
            var uStats = {
                'id': id,
                'lines': 0,
                'words': 0,
                'capitals': 0,
                'curses': 0,
                'channels': {},
                'creation': new Date().getTime()
            };
            this.db.save('user_stats', id, uStats, function(err, uStats) {
                callback(uStats); 
            });
        },

        'getChannelStats': function(id, callback) {
            this.db.read('channel_stats', id, function(err, cStats) {
                callback(cStats);
            });
        },

        'createChannelStats': function(id, callback) {
            var cStats = {
                'id': id,
                'lines': 0,
                'words': 0,
                'capitals': 0,
                'curses': 0,
                'creation': new Date().getTime()
            };
            this.db.save('channel_stats', id, cStats, function(err, cStats) {
                callback(cStats);
            });
        },

        'createTrackedWord': function(word, callback) {
            var tWord = {
                'word': word,
                'total': 0,
                'channels': {},
                'users': {},
                'creation': new Date().getTime()
            };
            this.db.save('tracked_words', word, tWord, function(err, tWord) {
                callback(tWord);
            });
        },

        'getTrackedWord': function(word, callback) {
            this.db.read('tracked_words', word, function(err, tWord) {
                callback(tWord);
            });
        }
    };

    return api;
};

exports.fetch = function(dbot) {
    return api(dbot);
};