DbFramework change log 2021-02-10 1. Build.PL, Makefile.PL: Added variable declaration, fixed the required file path, and prevented the automated tests. 2021-02-08 version 1.13 1. The DbFramework is hosted on GitHub now. 2. MANIFEST.SKIP: Added. 3. Makefile, MANIFEST, META.yml, SIGNATURE, t/Config.pm: Removed the generated files. 4. COPYING: Removed the redundant and irrelevant GPL license copy. 5. AUTHORS, TODO, README, README.md: Replaced the messy GNU-styled documents with a single Markdown README.md. 6. Makefile.PL, Build.PL: Added the CPAN distribution metadata. 2008-05-03 1. Makefile.PL and Build.PL: Automatic checks and lists only the available DBD drivers for tests. 2008-05-03 version 1.12 1. Makefile.PL and Build.PL: Provide a valid default DSN for DBD::mysql, DBD::mSQL and DBD::Pg. 2. Makefile.PL and Build.PL: Do not create the schema if answer is "no". 2008-04-21 1. Changes: Updated. 2. Build.PL: Renamed test database from "dbframework_test" to "test", to adapt the convention of MySQL and PostgreSQL. 3. TODO: Added. 4. AUTHORS: Added. 5. Artistic and COPYING: Added. 6. Makefile.PL: Added PL_FILES to disable PL files searching behavior, in order to work with ExtUtils::MakeMaker earlier than 6.25 that treats Build.PL as one of the PL files to run. 2008-04-20 1. Added lib and lib/DbFramework subdirectory. Move everything inside, to make the directory cleaner. 2. Makefile.PL: Clean up. Removed PMLIBDIRS since it is not required anymore. Removed linkext. linkext is only needed for ExtUtils::MakeMaker before version 5. That is too old today. 3. Makefile.PL and Build.PL: Use "use lib qw(lib); use DbFramework::Util;" instead of "require "./Util.pm"", in order to be more portable on different platforms. 4. Makefile.PL: Renamed test database from "dbframework_test" to "test", to adapt the convention of MySQL and PostgreSQL. 5. README: Moved Paul's BackPen URL to the previous line. 2008-04-19 1. Added lib and lib/DbFramework subdirectory. Move everything inside, to make the directory cleaner. 2. Changes: Added, with contents from original Paul's README file. This is to adapt the Perl module convention. 2008-04-19 version 1.11 Maintenance taken over by imacat. 1. Makefile.PL: Updated to use prompt() from ExtUtils::MakeMaker instead of reading STDIN directly, in order to prevent infinite loop with automated CPAN testers. (RT#34538) 2. t/util.pl: Subroutine yn() removed. It is not used anymore, due to the prompt() fix. 3. README: Add notice about the distribution ownership change. 4. Makefile.PL: ABSTRACT, AUTHOR, LICENSE and SIGN added to the WriteMakefile() arguments. VERSION is added in replace of VERSION_FROM. 5. SIGNATURE: Digital signature added. 6. META.yml: YAML distribution meta-information added. 7. Build.PL: Module::Build build support added. Original change log by Paul Sharpe follows. ================================== History ======= 15-05-1999 Paul Sharpe -------------------------------------------------------------------- RELEASE 1.10 Added support for PostgreSQL. INTERFACE CHANGES PrimaryKey:: - New method as_hidden_html() 30-04-1999 Paul Sharpe -------------------------------------------------------------------- RELEASE 1.09 dbforms.cgi - Can now update primary keys. - Removed dependency on ePerl. - Now takes dsn arguments to cater for variance between DBDs. INTERFACE CHANGES Catalog:: - set_primary_key() now sets labels if defined in the catalog. DataModel:: - New method dsn(). - new() now requires name to be the database name as pattern match to get database name forgot that this part of a DBI DSN is *non standard* - init_db_metadata() now requires DSN for catalog as it varies between drivers. Also now allows username/password for authentication against catalog database. ForeignKey:: - New method sql_where(). Makefile.PL - Moved most of the catalog initialisation here. - Manual creation of databases now required as there's no standard for creating databases. Each driver can use an arbitrarily named database for testing. Persistent:: - new() now requires a Catalog object. - update now takes %attributes argument so that a primary key can be updated. The current object state is used to update the row WHERE the primary key matches the values in %attributes. PrimaryKey:: - html_select_field() now has 'Any' *and* 'NULL' entries. I have a feeling this still isn't quite right. - New method as_hidden_html() - Signature to new() has changed now that label columns are supported by the catalog. - html_select_field() now follows label columns which are foreign keys back to their associated primary key table and uses the label columns from that table. This gives more meaningful select fields. Table:: - init_db_metadata() now requires catalog object argument. This should improve performance as a new catalog object (which involves a database connect()) won't be created every time this method is called. - in_foreign_key() now returns a list of foreign keys containing $attribute DataType::ANSII:: - Signature to new() has changed. Now requires $ansii_type argument. All data type objects will need to return their closest ANSII types as this is the $type which needs to be supplied to $dbh->quote($value,$type). - New method ansii_type(). 1-04-1999 Paul Sharpe -------------------------------------------------------------------- RELEASE 1.08 BUG FIX - Test database wasn't being created which was causing tests to fail. 28-03-1999 Paul Sharpe -------------------------------------------------------------------- RELEASE 1.07 Highlights ========== + Support for Msql (and potentially all DBI drivers.) + Improved template support. = API Attribute:: -- BUG FIXES - as_html_form_field() was producing invalid HTML for date fields. - as_html_heading() now takes $bgcolor argument. Catalog.pm (NEW CLASS) DataModel:: - new() now takes data source name to move away from dependence on Mysql. - init_db_metadata() now needs to be called explicitly (not called in new()). - New methods driver() and db(). DataType::ANSII:: (NEW CLASS) DataType/Mysql:: (NEW CLASS) ForeignKey:: -- BUG FIX - as_html_form_field() was using pk attribute names to select defaults in select field. Should use fk attribute names. Table:: - read_form now takes ($name,$path) arguments. - get_dbh() now takes data source name to move away from dependence on Mysql. Persistent:: - New method init_pk() - New method table_qualified_attribute_hashref() - Removed method fill_template(). Templates now handled by Template.pm. - select() now takes extra argument $order. PrimaryKey:: - New method as_query_string() - html_select_field() sets null value labels to the string 'NULL'. Table:: -- BUG FIXES - insert() should only try to insert values which are defined. - Don't try to update columns where the value is undefined. - as_html_heading() required more specific pattern match. - Quoting in insert() and update() required type to correctly quote numeric fields. - new() was using wrong argument in belongs_to() - new() now takes optional DataModel argument - New method belongs_to() - get_attribute_names renamed attribute_names() - New method select_loh() - @columns in select() and select_loh() can contain references to database functions to be applied to the column. - removed methods set_templates(), read_form() and fill_templates() as template handling is now done in Template.pm - as_html_heading() now adds one heading for each key attribute. - insert() returns -1 for non auto increment columns. Template:: (NEW CLASS) Util:: - Removed get_db() as it was Mysql specific. The database name can be retrieved from DbFramework::DataModel::db - New sub do_sql() - get_dbh() now takes data source name to move away from dependence on Mysql. = Makefile.PL configures drivers to test at 'make test' stage. = dbforms.cgi - Now accepts DBI driver CGI parameter (default is Mysql.) = Overhaul of test scripts. 12-1-1999 Paul Sharpe ------------------------------------------------------------------------------- RELEASE 1.06 = UI Default input templates now produce 'datasheet' view. = API Attribute:: - New method as_html_heading() Key:: - New method as_html_heading() PrimaryKey:: - New method as_html_heading() Table:: - New method as_html_heading() 6-1-1999 Paul Sharpe ------------------------------------------------------------------------------- RELEASE 1.05 = INTERFACE Table - New method dbh($dbh) (added pod for AUTOLOAD() method) = Improved form and template support - new() now takes list of forms rather than template definitions and evals configuration from config.pl files. - New method read_form() - More pod - Default output templates now handle foreign keys by replacing them with columns from the related table. - template tag can now contain a list of attributes to be substituted for values. dbforms.cgi - fills values from related table for foreign keys in default output template. - Now handles user-defined forms. 18-Dec-1998 Paul Sharpe ------------------------------------------------------------------------------- RELEASE 1.04 = INTERFACE ForeignKey - New method as_html_form_field(\%values) Table - as_html_form() now returns fields for foreign keys too. - fill_template() now creates selection boxes for tags. = dbforms.cgi New experimental UI separating search and modify. Catches and displays SQL errors. 11-Dec-1998 Paul Sharpe ------------------------------------------------------------------------------- RELEASE 1.03 - Bug fixes. 11-Dec-1998 Paul Sharpe ------------------------------------------------------------------------------- RELEASE 1.02 - dbforms.cgi HTML forms application - Bug fixes: Table::select(), Attribute::as_html_form_field() - INTERFACE *_h_byname() methods take an array rather than an arrayref Persistent - New method make_class() - New method fill_template() - New method as_html_form() - fill_template() now takes $name argument Table - New method in_foreign_key() - as_html_form() doesn't return
container so doesn't require $action argument. - New method in_key() - New method in_primary_key() - New method in_any_key() - New method non_key_attributes() - Removed method html_pk_select_field() - New attribute/methods HAS_FOREIGN_KEYS_H - fill_template() now supports placeholders. Key - New method belongs_to() - new() now takes a reference to a hash of templates. - fill_template() now takes a template name and reference to a hash of values. - templates() removed - New method set_templates() - New method bgcolor() Attribute - New method _input_template() - New method _output_template() - New method bgcolor() PrimaryKey - New method html_select_field() 26-Nov-1998 Paul Sharpe ------------------------------------------------------------------------------- RELEASE 1.01 (FIRST PUBLIC RELEASE) To do ===== * BUG: dbforms.cgi delete on row consisting of all foreign keys silently fails. * Improve dbforms.cgi interface. Perhaps a rename is in order too. I'm thinking of having a single record interface with record navigation. The form can then be designed and specified as an argument. * Fri Jan 8, 1999 BUG - >1 fk relating to the same pk table in a single table is not handled by dbforms.cgi 4/1/1999 - User-defined templates specify attributes to be used for foreign keys and ordering - Allow relationships between the same table (in different roles). Needs documenting * Make Bundle::DbFramework * Schema grammar - might be better off using Jeeves (from the Panther book) - should handle relationships of degree >2 - could be CDIF compliant * Attributes of relationships should be stored so that full schema including attributes of relationships can be built from meta-data. * add support for UNIQUE columns (different to ordinary KEYs) * make primary key in grammar optional (1:1 relationships) * make relationships optional in grammar