|
|
- /*
- g++ -g worm_wt_example.cpp -o wormex -rdynamic -lworm -lmysqlclient -lsqlite3 -lctemplate_nothreads -lwt -lwtext -lwthttp -lwtdbo -lwtdbosqlite3 -lwtdbopostgres -lboost_date_time-mt -lboost_regex-mt -lboost_program_options-mt -lboost_signals-mt -lboost_system-mt -lboost_filesystem-mt -lboost_thread-mt
- */
-
-
- #include <Wt/WApplication>
- #include <Wt/WServer>
- #include <Wt/WTable>
- #include <Wt/WString>
- #include <Wt/WEnvironment>
- #include <Wt/WBoxLayout>
- #include <Wt/WText>
- #include <Wt/WContainerWidget>
-
- #include "../src/sql/wsqldatabase.h"
-
- using Wt::WApplication;
- using Wt::WEnvironment;
- using Wt::WString;
- using Wt::WBoxLayout;
- using Wt::WText;
- using std::string;
-
- Wt::WTable *getdbtables()
- {
- Wt::WTable *table = new Wt::WTable();
- table->setMargin ( "0.5em" );
- Wt::WCssDecorationStyle *border = new Wt::WCssDecorationStyle();
- border->setBorder ( Wt::WBorder ( Wt::WBorder::Dotted ) );
- table->setDecorationStyle ( *border );
- // border->setBorder(Wt::WBorder(Wt::WBorder::Dashed ));
-
-
- WSql::WSqlDatabase db ( WSql::WSQLITE );
- db.setDatabaseName ( string ( "blog.db" ) );
-
- if ( !db.open() )
- {
- std::cerr << "nope .." << db.error().text() << std::endl;
- return table;
- }
-
- std::vector<string>tables = db.tableNames();
- std::vector<string>::iterator it = tables.begin();
- WSql::WSqlTable stbl;
- int numflds = 0;
- int row = 0;
-
- while ( it != tables.end() )
- {
- stbl = db.tableMetaData ( *it++ );
- numflds = stbl.count();
- Wt::WTableCell *cell = table->elementAt ( row++, 0 );
- cell->addWidget ( new Wt::WText ( WString ( "Table Name: {1}" ).arg ( stbl.name() ) ) );
- cell->setColumnSpan ( 5 );
- cell->setPadding ( "0.5em" );
- cell->setContentAlignment ( Wt::AlignCenter );
- int i = 0;
-
- for ( ; i < numflds; ++i )
- {
- WSql::WSqlColumn clm = stbl.column ( i );
-
- table->elementAt ( row + i, 0 )->addWidget ( new Wt::WText ( "Field: " ) );
- table->elementAt ( row + i, 0 )->setPadding ( "0.5em" );
- table->elementAt ( row + i, 0 )->setDecorationStyle ( *border );
- table->elementAt ( row + i, 1 )->addWidget ( new Wt::WText ( clm.columnName() ) );
- table->elementAt ( row + i, 1 )->setPadding ( "0.5em" );
- table->elementAt ( row + i, 1 )->setDecorationStyle ( *border );
- table->elementAt ( row + i, 2 )->addWidget ( new Wt::WText ( WSql::WSqlDataType::toString ( clm.type() ) ) );
- table->elementAt ( row + i, 2 )->setPadding ( "0.5em" );
- table->elementAt ( row + i, 2 )->setDecorationStyle ( *border );
- table->elementAt ( row + i, 3 )->addWidget ( new Wt::WText ( clm.defaultValue<string > () ) );
- table->elementAt ( row + i, 3 )->setPadding ( "0.5em" );
- table->elementAt ( row + i, 3 )->setDecorationStyle ( *border );
- table->elementAt ( row + i, 4 )->addWidget ( new Wt::WText ( clm.isPrimaryKey() ? "Primary Key" : "Not primary" ) );
- table->elementAt ( row + i, 4 )->setPadding ( "0.5em" );
- table->elementAt ( row + i, 4 )->setDecorationStyle ( *border );
- table->elementAt ( row + i, 5 )->addWidget ( new Wt::WText ( clm.canBeNull() ? "Nullable" : "Not nullable" ) );
- table->elementAt ( row + i, 5 )->setPadding ( "0.5em" );
- table->elementAt ( row + i, 5 )->setDecorationStyle ( *border );
- }
-
- row += i;
- }
-
- db.close();
- return table;
- }
-
- class wormApp : public Wt::WApplication
- {
- public:
- wormApp ( const Wt::WEnvironment &env );
- };
-
- wormApp::wormApp ( const Wt::WEnvironment &env ) : Wt::WApplication ( env )
- {
- setTitle ( "worm" );
- Wt::WTable *tbl = getdbtables();
- root()->addWidget ( new WText ( "Tables" ) );
- root()->addWidget ( tbl );
- }
-
- WApplication *createwormApp ( const WEnvironment &env )
- {
- WApplication *app = new wormApp ( env );
- return app;
- }
-
- int main ( int argc, char **argv )
- {
- Wt::WServer server ( argv[0] );
- server.setServerConfiguration ( argc, argv, WTHTTP_CONFIGURATION );
- server.addEntryPoint ( Wt::Application, createwormApp );
-
- if ( server.start() )
- {
- int sig = Wt::WServer::waitForShutdown ( argv[0] );
- std::cerr << "Shutdown (signal = " << sig << ")" << std::endl;
- server.stop();
- }
- }
|