Пример #1
0
void
blobcache_init(void)
{
    sqlite3 *db;
    extern char *showtime_cache_path;
    char buf[256];

    blobcache_prune_old();

    snprintf(buf, sizeof(buf), "%s/cachedb", showtime_cache_path);
    mkdir(buf, 0770);
    snprintf(buf, sizeof(buf), "%s/cachedb/cache.db", showtime_cache_path);

    //  unlink(buf);

    cachedb_pool = db_pool_create(buf, 4);
    db = db_pool_get(cachedb_pool);
    if(db == NULL)
        return;

    int r = db_upgrade_schema(db, "bundle://resources/cachedb", "cachedb");

    db_pool_put(cachedb_pool, db);

    if(r)
        cachedb_pool = NULL;
    else
        callout_arm(&blobcache_callout, blobcache_do_prune, NULL, 1);
}
Пример #2
0
void db_check_schema( char *setting, char *desc, int codeSupports, 
                      QueryTable_t *defSchema, int defSchemaCount, 
                      SchemaUpgrade_t *schemaUpgrade )
{
    char               *verString;
    int                 ver;
    int                 printed;

    ver = -1;
    printed = FALSE;
    do {
        verString = db_get_setting( setting );
        if( !verString ) {
            ver = 0;
        } else {
            ver = atoi( verString );
            free( verString );
        }

        if( !printed ) {
            LogPrint( LOG_CRIT, "Current %s database schema version %d", desc,
                                ver );
            LogPrint( LOG_CRIT, "Code supports version %d", codeSupports );
            printed = TRUE;
        }

        if( ver < codeSupports ) {
            ver = db_upgrade_schema( setting, desc, defSchema, defSchemaCount,
                                     schemaUpgrade, ver, codeSupports );
        }
    } while( ver < codeSupports );
}
Пример #3
0
static int
es_db_upgrade_schema(duk_context *ctx)
{
    es_sqlite_t *es = es_resource_get(ctx, 0, &es_resource_sqlite);

    int r = db_upgrade_schema(es->es_db, duk_safe_to_string(ctx, 1),
                              es->es_name, NULL, NULL);

    if(r)
        duk_error(ctx, DUK_ERR_ERROR, "Unable to upgrade schema");
    return 0;
}
Пример #4
0
static JSBool
js_db_upgrade(JSContext *cx, JSObject *obj, uintN argc,
              jsval *argv, jsval *rval)
{
    int r = 0;
    const char *path;
    js_db_t *jd = JS_GetPrivate(cx, obj);

    if(js_db_check(cx, jd))
        return JS_FALSE;

    if(!JS_ConvertArguments(cx, argc, argv, "s", &path))
        return JS_FALSE;

    r = db_upgrade_schema(jd->jd_db, path, jd->jd_name, NULL, NULL);

    *rval = BOOLEAN_TO_JSVAL(!r);
    return JS_TRUE;
}