All pastes #914591 Raw Edit

Anonymous

public text v1 · immutable
#914591 ·published 2008-02-23 00:28 UTC
rendered paste body
void LiteRecipeDB::createTable( const QString &tableName )
{

        QStringList commands;

        if ( tableName == "recipes" )
                commands << QString( "CREATE TABLE recipes (id INTEGER NOT NULL,title VARCHAR(%1), yield_amount FLOAT, yield_amount_offset FLOAT, yield_type_id INTEGER DEFAULT '-1', instructions
TEXT, photo BLOB, prep_time TIME, ctime TIMESTAMP, mtime TIMESTAMP, atime TIMESTAMP,  PRIMARY KEY (id));" ).arg( maxRecipeTitleLength() );

        else if ( tableName == "ingredients" )
                commands << QString( "CREATE TABLE ingredients (id INTEGER NOT NULL, name VARCHAR(%1), PRIMARY KEY (id));" ).arg( maxIngredientNameLength() );

        else if ( tableName == "ingredient_list" ) {
                commands << "CREATE TABLE ingredient_list (id INTEGER NOT NULL, recipe_id INTEGER, ingredient_id INTEGER, amount FLOAT, amount_offset FLOAT, unit_id INTEGER, order_index INTEGER,
group_id INTEGER, substitute_for INTEGER, PRIMARY KEY(id) );"
                << "CREATE index ridil_index ON ingredient_list(recipe_id);"
                << "CREATE index iidil_index ON ingredient_list(ingredient_id);"
                << "CREATE index gidil_index ON ingredient_list(group_id);";
        }

        else if ( tableName == "unit_list" )
                commands << "CREATE TABLE unit_list (ingredient_id INTEGER, unit_id INTEGER);";

        else if ( tableName == "units" )
                commands << QString( "CREATE TABLE units (id INTEGER NOT NULL, name VARCHAR(%1), name_abbrev VARCHAR(%2), plural VARCHAR(%3), plural_abbrev VARCHAR(%4), type INTEGER NOT NULL DEFA
ULT '0',PRIMARY KEY (id));" )
                   .arg( maxUnitNameLength() ).arg( maxUnitNameLength() ).arg( maxUnitNameLength() ).arg( maxUnitNameLength() );

        else if ( tableName == "prep_methods" )
                commands << QString( "CREATE TABLE prep_methods (id INTEGER NOT NULL, name VARCHAR(%1), PRIMARY KEY (id));" ).arg( maxPrepMethodNameLength() );

        else if ( tableName == "prep_method_list" ) {
                commands << "CREATE TABLE prep_method_list (ingredient_list_id INTEGER NOT NULL,prep_method_id INTEGER NOT NULL, order_index INTEGER );"
                << "CREATE index iid_index ON prep_method_list(ingredient_list_id);"
                << "CREATE index pid_index ON prep_method_list(prep_method_id);";
        }

        else if ( tableName == "ingredient_info" )
                commands << "CREATE TABLE ingredient_info (ingredient_id INTEGER, property_id INTEGER, amount FLOAT, per_units INTEGER);";

        else if ( tableName == "ingredient_properties" )
                commands << "CREATE TABLE ingredient_properties (id INTEGER NOT NULL,name VARCHAR(20), units VARCHAR(20), PRIMARY KEY (id));";

        else if ( tableName == "ingredient_weights" ) {
                commands << "CREATE TABLE ingredient_weights (id INTEGER NOT NULL, ingredient_id INTEGER NOT NULL, amount FLOAT, unit_id INTEGER, weight FLOAT, weight_unit_id INTEGER, prep_method
_id INTEGER, PRIMARY KEY (id) );"

                << "CREATE index weight_wid_index ON ingredient_weights(weight_unit_id)"
                << "CREATE index weight_pid_index ON ingredient_weights(prep_method_id)"
                << "CREATE index weight_uid_index ON ingredient_weights(unit_id)"
                << "CREATE index weight_iid_index ON ingredient_weights(ingredient_id)";
        }

        else if ( tableName == "categories" ) {
                commands << QString( "CREATE TABLE categories (id INTEGER NOT NULL, name varchar(%1) default NULL, parent_id INGEGER NOT NULL default -1, PRIMARY KEY (id));" ).arg( maxCategoryNameLength() );
                commands << "CREATE index parent_id_index ON categories(parent_id);";
        }
        else if ( tableName == "category_list" ) {
                commands << "CREATE TABLE category_list (recipe_id INTEGER NOT NULL,category_id INTEGER NOT NULL);"
                << "CREATE index rid_index ON category_list(recipe_id);"
                << "CREATE index cid_index ON category_list(category_id);";
        }

        else if ( tableName == "authors" )
                commands << QString( "CREATE TABLE authors (id INTEGER NOT NULL, name varchar(%1) default NULL,PRIMARY KEY (id));" ).arg( maxAuthorNameLength() );

        else if ( tableName == "author_list" )
                commands << "CREATE TABLE author_list (recipe_id INTEGER NOT NULL,author_id INTEGER NOT NULL);";

        else if ( tableName == "db_info" ) {
                commands << "CREATE TABLE db_info (ver FLOAT NOT NULL,generated_by varchar(200) default NULL);";
                commands << QString( "INSERT INTO db_info VALUES(%1,'Krecipes %2');" ).arg( latestDBVersion() ).arg( krecipes_version() );
        }
        else if ( tableName == "ingredient_groups" ) {
                commands << QString( "CREATE TABLE ingredient_groups (id INTEGER NOT NULL, name varchar(%1), PRIMARY KEY (id));" ).arg( maxIngGroupNameLength() );
        }
        else if ( tableName == "yield_types" ) {
                commands << QString( "CREATE TABLE yield_types (id INTEGER NOT NULL, name varchar(%1), PRIMARY KEY (id));" ).arg( maxYieldTypeLength() );
        }

        else if ( tableName == "ratings" )
                commands << "CREATE TABLE ratings (id INTEGER NOT NULL, recipe_id int(11) NOT NULL, comment TEXT, rater TEXT, created TIMESTAMP, PRIMARY KEY (id));";

        else if ( tableName == "rating_criteria" )
                commands << "CREATE TABLE rating_criteria (id INTEGER NOT NULL, name TEXT, PRIMARY KEY (id));";

        else if ( tableName == "rating_criterion_list" )
                commands << "CREATE TABLE rating_criterion_list (rating_id INTEGER NOT NULL, rating_criterion_id INTEGER, stars FLOAT);";

        else
                return ;

        // execute the queries
        for ( QStringList::const_iterator it = commands.begin(); it != commands.end(); ++it )
                database->exec( *it );
}