summaryrefslogtreecommitdiffstats
path: root/src/backends/qsqlrecipedb.h
diff options
context:
space:
mode:
authorMichele Calgaro <[email protected]>2024-10-13 11:56:14 +0900
committerMichele Calgaro <[email protected]>2024-10-21 09:29:11 +0900
commit0c8ed6c9a4000af8f48581a81c4b5c2f5b9fd502 (patch)
tree10f9d3223f0a0904a0748a28ca44da52ee1092b7 /src/backends/qsqlrecipedb.h
parent7d5ba3180a82a0827c1fbd6dc93a2abf4f882c37 (diff)
downloadkrecipes-0c8ed6c9a4000af8f48581a81c4b5c2f5b9fd502.tar.gz
krecipes-0c8ed6c9a4000af8f48581a81c4b5c2f5b9fd502.zip
Rearrange folders structure to remove unnecessary 'krecipes' second level subfolder
Signed-off-by: Michele Calgaro <[email protected]>
Diffstat (limited to 'src/backends/qsqlrecipedb.h')
-rw-r--r--src/backends/qsqlrecipedb.h228
1 files changed, 228 insertions, 0 deletions
diff --git a/src/backends/qsqlrecipedb.h b/src/backends/qsqlrecipedb.h
new file mode 100644
index 0000000..b9211d7
--- /dev/null
+++ b/src/backends/qsqlrecipedb.h
@@ -0,0 +1,228 @@
+/***************************************************************************
+* Copyright (C) 2004 by *
+* Unai Garro ([email protected]) *
+* Cyril Bosselut ([email protected]) *
+* Jason Kivlighn ([email protected]) *
+* *
+* Copyright (C) 2006 Jason Kivlighn ([email protected]) *
+* *
+* This program is free software; you can redistribute it and/or modify *
+* it under the terms of the GNU General Public License as published by *
+* the Free Software Foundation; either version 2 of the License, or *
+* (at your option) any later version. *
+***************************************************************************/
+
+
+#ifndef TQSQLRECIPEDB_H
+#define TQSQLRECIPEDB_H
+
+#include "backends/recipedb.h"
+
+#include <tqglobal.h>
+#include <tqobject.h>
+#include <tqsqldatabase.h>
+#include <tqimage.h>
+#include <tqfileinfo.h>
+#include <tqregexp.h>
+#include <tqstring.h>
+
+#include "datablocks/recipe.h"
+#include "datablocks/elementlist.h"
+#include "datablocks/ingredientpropertylist.h"
+#include "datablocks/unitratiolist.h"
+
+/**
+@author Unai Garro, Jason Kivlighn
+*/
+class TQSqlRecipeDB : public RecipeDB
+{
+
+ TQ_OBJECT
+
+protected:
+ virtual TQString qsqlDriverPlugin() const { return TQString::null; }
+ virtual TQSqlDriver *qsqlDriver() const { return 0; }
+ virtual void createDB( void ) = 0;
+
+ virtual void portOldDatabases( float version );
+ virtual void storePhoto( int recipeID, const TQByteArray &data );
+ virtual void loadPhoto( int recipeID, TQPixmap &photo );
+ void loadRecipeMetadata( Recipe *recipe );
+
+ void search( RecipeList *list, int items, const RecipeSearchParameters & );
+
+ /** Return the next id for the given table and column.
+ * If the database supports getting this afterwards,
+ * leave the default implementation which returns -1.
+ *
+ * Note: Only call when an insert is actually going to take place.
+ * This function will increment the sequence counter.
+ */
+ virtual int getNextInsertID( const TQString & /*table*/, const TQString & /*column*/ )
+ {
+ return -1;
+ }
+
+ TQSqlDatabase *database;
+ TQSqlQuery m_query;
+ TQString DBuser;
+ TQString DBpass;
+ TQString DBhost;
+ int DBport;
+
+public:
+ TQSqlRecipeDB( const TQString &host, const TQString &user = TQString::null, const TQString &pass = TQString::null, const TQString &DBName = DEFAULT_DB_NAME, int port = 0 );
+ ~TQSqlRecipeDB( void );
+
+ void connect( bool create_db, bool create_tables );
+
+ void addIngredientWeight( const Weight & );
+ void addProperty( const TQString &name, const TQString &units );
+ void addPropertyToIngredient( int ingredientID, int propertyID, double amount, int perUnitsID );
+ void addUnitToIngredient( int ingredientID, int unitID );
+
+ void categorizeRecipe( int recipeID, const ElementList &categoryList );
+ void changePropertyAmountToIngredient( int ingredientID, int propertyID, double amount, int per_units );
+
+ void createNewAuthor( const TQString &authorName );
+ void createNewCategory( const TQString &categoryName, int parent_id = -1 );
+ void createNewIngGroup( const TQString &name );
+ void createNewIngredient( const TQString &ingredientName );
+ void createNewPrepMethod( const TQString &prepMethodName );
+ void createNewRating( const TQString &name );
+ void createNewUnit( const Unit &unit );
+ void createNewYieldType( const TQString &type );
+
+ void emptyData( void );
+ void empty( void );
+
+ int findExistingAuthorByName( const TQString& name );
+ int findExistingCategoryByName( const TQString& name );
+ int findExistingIngredientGroupByName( const TQString& name );
+ int findExistingIngredientByName( const TQString& name );
+ int findExistingPrepByName( const TQString& name );
+ int findExistingRecipeByName( const TQString& name );
+ int findExistingRatingByName( const TQString& name );
+ int findExistingUnitByName( const TQString& name );
+ int findExistingPropertyByName( const TQString& name );
+ int findExistingYieldTypeByName( const TQString& name );
+ void findIngredientUnitDependancies( int ingredientID, int unitID, ElementList *recipes, ElementList *ingredientInfo );
+ void findIngredientDependancies( int ingredientID, ElementList *recipes );
+ void findPrepMethodDependancies( int prepMethodID, ElementList *recipes );
+ void findUnitDependancies( int unitID, ElementList *properties, ElementList *recipes, ElementList *weights );
+ void findUseOfIngGroupInRecipes( ElementList *results, int groupID );
+ void findUseOfCategoryInRecipes( ElementList *results, int catID );
+ void findUseOfAuthorInRecipes( ElementList *results, int authorID );
+
+ TQString getUniqueRecipeTitle( const TQString &recipe_title );
+
+ bool ingredientContainsProperty( int ingredientID, int propertyID, int perUnitsID );
+ bool ingredientContainsUnit( int ingredientID, int unitID );
+
+ void loadAuthors( ElementList *list, int limit = -1, int offset = 0 );
+ void loadCategories( CategoryTree *list, int limit = -1, int offset = 0, int parent_id = -1, bool recurse = true );
+ void loadCategories( ElementList *list, int limit = -1, int offset = 0 );
+ void loadIngredientGroups( ElementList *list );
+ void loadIngredients( ElementList *list, int limit = -1, int offset = 0 );
+ void loadPossibleUnits( int ingredientID, UnitList *list );
+ void loadPrepMethods( ElementList *list, int limit = -1, int offset = 0 );
+ void loadProperties( IngredientPropertyList *list, int ingredientID = -2 ); // Loads the list of possible properties by default, all the ingredient properties with -1, and the ingredients of given property if id>=0
+ void loadRatingCriterion( ElementList *list, int limit = -1, int offset = 0 );
+ void loadRecipes( RecipeList *, int items = All, TQValueList<int> ids = TQValueList<int>() );
+ void loadRecipeList( ElementList *list, int categoryID = -1, bool recursive = false );
+ void loadUncategorizedRecipes( ElementList *list );
+ void loadUnits( UnitList *list, Unit::Type = Unit::All, int limit = -1, int offset = 0 );
+ void loadUnitRatios( UnitRatioList *ratioList, Unit::Type );
+ void loadYieldTypes( ElementList *list, int limit, int offset );
+
+ void mergeAuthors( int id1, int id2 );
+ void mergeCategories( int id1, int id2 );
+ void mergeIngredientGroups( int id1, int id2 );
+ void mergeIngredients( int id1, int id2 );
+ void mergeUnits( int id1, int id2 );
+ void mergePrepMethods( int id1, int id2 );
+ void mergeProperties( int id1, int id2 );
+
+ void modIngredientGroup( int ingredientID, const TQString &newLabel );
+ /**
+ * set newLabel for ingredientID
+ */
+ void modIngredient( int ingredientID, const TQString &newLabel );
+ /**
+ * set newLabel for unitID
+ */
+ void modUnit( const Unit &unit );
+ /**
+ * set newLabel for categoryID
+ */
+ void modCategory( int categoryID, const TQString &newLabel );
+ void modCategory( int categoryID, int new_parent_id );
+ /**
+ * set newLabel for authorID
+ */
+ void modAuthor( int authorID, const TQString &newLabel );
+
+ void modPrepMethod( int prepMethodID, const TQString &newLabel );
+
+ void modProperty( int propertyID, const TQString &newLabel );
+
+ TQString recipeTitle( int recipeID );
+
+ void removeAuthor( int categoryID );
+ void removeCategory( int categoryID );
+ void removeIngredientGroup( int groupID );
+ void removeIngredient( int ingredientID );
+ void removeIngredientWeight( int id );
+ void removePrepMethod( int prepMethodID );
+ void removeProperty( int propertyID );
+ void removePropertyFromIngredient( int ingredientID, int propertyID, int perUnitID );
+ void removeRecipe( int id );
+ void removeRecipeFromCategory( int ingredientID, int categoryID );
+ void removeUnit( int unitID );
+ void removeUnitFromIngredient( int ingredientID, int unitID );
+ void removeUnitRatio( int unitID1, int unitID2 );
+
+ void saveRecipe( Recipe *recipe );
+ void saveUnitRatio( const UnitRatio *ratio );
+
+ double unitRatio( int unitID1, int unitID2 );
+ double ingredientWeight( const Ingredient &ing, bool *wasApproximated = 0 );
+ WeightList ingredientWeightUnits( int ingID );
+
+ TQString escapeAndEncode( const TQString &s ) const;
+ TQString unescapeAndDecode( const TQCString &s ) const;
+
+ TQString categoryName( int ID );
+ TQString prepMethodName( int ID );
+ TQString ingredientName( int ID );
+ IngredientProperty propertyName( int ID );
+ Unit unitName( int ID );
+
+ int getCount( const TQString &table_name );
+ int categoryTopLevelCount();
+
+ bool checkIntegrity( void );
+
+ void splitCommands( TQString& s, TQStringList& sl );
+
+ float databaseVersion( void );
+
+protected:
+ void execSQL( const TQString &command );
+
+private:
+ void loadElementList( ElementList *elList, TQSqlQuery *query );
+ void loadPropertyElementList( ElementList *elList, TQSqlQuery *query );
+ TQString getNextInsertIDStr( const TQString &table, const TQString &column );
+
+ TQString DBname;
+ const TQString connectionName;
+ TQString m_command;
+
+ static int m_refCount;
+};
+
+
+
+
+#endif