Пример #1
0
/* this should be run within a transaction */
static int db_find_or_create_tag(const char *tag) {
	int tid;
	sqlite3_stmt *stmt;

	if( (tid = db_tag_id(tag)) > 0) {
		return tid;
	}

	DB_STMT_PREP("INSERT INTO tags (name) VALUES (?)", &stmt);
	DB_BIND_TEXT(stmt, 1, tag);
	DB_STMT_EXEC(stmt);

	tid = sqlite3_last_insert_rowid(g.handle);
	return tid;
}
Пример #2
0
static int db_tag_id(const char *tag) {
	sqlite3_stmt *stmt;
	int id;

	id = 0;
	DB_STMT_PREP("SELECT id FROM tags WHERE name = ?", &stmt);
	DB_BIND_TEXT(stmt, 1, tag);
	if(db_stmt_step(stmt) != 0) 
		goto done; /* no rows in the tags table */

	id = sqlite3_column_int(stmt, 0);
done:
	DB_STMT_FINALIZE(stmt);
	return id;
}
Пример #3
0
static int beatmap_insert(osux_beatmap_db *db, osux_beatmap *bm)
{
    int ret;
    if (!db->insert_prepared) {
        ret = osux_database_prepare_query(
            &db->base, "INSERT INTO beatmap "
            "(osu_beatmap_id, game_mode, audio_filename, diff_name,"
            "md5_hash, osu_filename, file_path,"
            "circles, sliders, spinners, last_modification, last_checked,"
            "approach_rate, circle_size, hp_drain, overall_diff,"
            "slider_velocity, stack_leniency, drain_time, total_time,"
            "preview_time, bpm_avg, bpm_max, bpm_min, local_offset,"
            "online_offset, already_played, last_played, ignore_hitsound,"
            "ignore_skin, disable_sb, disable_video, visual_override,"
            "mania_scroll_speed)"
            " VALUES"
            "(:osu_beatmap_id, :game_mode, :audio_filename, :diff_name,"
            ":md5_hash, :osu_filename, :file_path,"
            ":circles, :sliders, :spinners, :last_modification, :last_checked,"
            ":approach_rate, :circle_size, :hp_drain, :overall_diff,"
            ":slider_velocity, :stack_leniency, :drain_time, :total_time,"
            ":preview_time, :bpm_avg, :bpm_max, :bpm_min, :local_offset,"
            ":online_offset, :already_played, :last_played, :ignore_hitsound,"
            ":ignore_skin, :disable_sb, :disable_video, :visual_override,"
            ":mania_scroll_speed)");
        if (ret < 0)
            return ret;
        db->insert_prepared = true;
    }

    DB_BIND_INT(db, "osu_beatmap_id", bm->BeatmapID);
    DB_BIND_INT(db, "game_mode", bm->Mode);
    DB_BIND_TEXT(db, "audio_filename", bm->AudioFilename);
    DB_BIND_TEXT(db, "md5_hash", bm->md5_hash);
    DB_BIND_TEXT(db, "osu_filename", bm->osu_filename);
    DB_BIND_TEXT(db, "file_path", bm->file_path);
    DB_BIND_TEXT(db, "diff_name", bm->Version);
    DB_BIND_INT(db, "circles", bm->circles);
    DB_BIND_INT(db, "sliders", bm->sliders);
    DB_BIND_INT(db, "spinners", bm->spinners);
    DB_BIND_INT(db, "last_modification", bm->last_modification);
    DB_BIND_INT(db, "last_checked", bm->last_checked);
    DB_BIND_DOUBLE(db, "approach_rate", bm->ApproachRate);
    DB_BIND_DOUBLE(db, "circle_size", bm->CircleSize);
    DB_BIND_DOUBLE(db, "hp_drain", bm->HPDrainRate);
    DB_BIND_DOUBLE(db, "overall_diff", bm->OverallDifficulty);
    DB_BIND_DOUBLE(db, "slider_velocity", bm->SliderMultiplier);
    DB_BIND_DOUBLE(db, "stack_leniency", bm->StackLeniency);
    DB_BIND_INT(db, "drain_time", bm->drain_time);
    DB_BIND_INT(db, "total_time", bm->total_time);
    DB_BIND_INT(db, "preview_time", bm->PreviewTime);
    DB_BIND_INT(db, "bpm_avg", bm->bpm_avg);
    DB_BIND_INT(db, "bpm_min", bm->bpm_min);
    DB_BIND_INT(db, "bpm_max", bm->bpm_max);
    DB_BIND_INT(db, "local_offset", bm->local_offset);
    DB_BIND_INT(db, "online_offset", bm->online_offset);
    DB_BIND_INT(db, "already_played", bm->already_played);
    DB_BIND_INT(db, "last_played", bm->last_played);
    DB_BIND_INT(db, "ignore_hitsound", bm->ignore_hitsound);
    DB_BIND_INT(db, "ignore_skin", bm->ignore_skin);
    DB_BIND_INT(db, "disable_sb", bm->disable_sb);
    DB_BIND_INT(db, "disable_video", bm->disable_video);
    DB_BIND_INT(db, "visual_override", bm->visual_override);
    DB_BIND_INT(db, "mania_scroll_speed", bm->mania_scroll_speed);

    return osux_database_exec_prepared_query(&db->base, NULL);
}