FTN Database application To Do
General
Create FTNDB::Examples for example configuration files and scripts?
Move code repository information and the distribution archive information from the README file to elsewhere; POD in modules and scripts is where I've been putting it, so the README really only needs to reference the documentation.
Add an option, like -r, for specifying a region number; to be used like the zone (-z) or net (-n) options, and available to all commands as needed.
Add script option for referencing an sql string for things like defining a table or other definitions. Is "-s" already being used?
Use Test::Database in test scripts?
ftndbadm
Develop a new version of the ftndb-admin script, basing it on App::Cmd and at least initially having the name ftndbadm. Move the functionality currently in the ftndb-admin script to the new ftndbadm script.
FTNDB::Command::drop.pm
As part of the transition to using App::Cmd; move the functionality for the drop command from bin/ftndb-admin to the new module for the drop command.
Besides functionality for dropping databases and tables by their names, add being able to drop an index by name.
FTNDB::Command::create.pm
As part of the transition to using App::Cmd; move the functionality for the create command from bin/ftndb-admin to the new module for the create command.
Add a command line option to reference a file containing the definition of a nodelist table ("-s" as noted above?); perhaps also add a configuration option for the same thing?
FTNDB::Nodelist
After create_ftn_table is available: rewrite create_nodelist_table to use that and the new define_nodelist_table function.
Add a function to enable getting the nodelist header information; when given a full path to a nodelist file, it will return a hash with at least the ftnyear and yearday information. (Should really be a function of or an extension to FTN::Nodelist.)
Add a function that checks if an ftnyear:yearday combination is already in the database. Check for the ftnyear first; if that is present, then check yearday? Or should such a function be in FTN::Database::Nodelist, as that is a database function?
Derive and move function to insert or update an entry from ftndb-nodelist. Separate functions for insert & update, or different options in same function?
Move get_nodelist_filename subroutine from the ftndb-nodelist script?
Derive and move a function for executing queries on the nodelist table from the code used in the list_ftn_nodelist subroutine.
As part of adding statistics related functions, add a function that counts the number of nodes that have a particular flag associated with it? Could use the name "get_nodelist_flag_count ($dbh, $table_name, $nodelist_flag)" but how to build in extra parts of the search for things like "zone = 1"? Also add something that counts the number of things like hubs, nodes marked as private, etc?
ftndb-nodelist
The 'region' field for a zone independent node is not being set correctly in the database; example 2:2/0 is being set to region 19, or 1:1/0 which is being set to 0. Should be set to the same as the zone number.
Need to add something to the database to reflect nodes being under a hub? Or otherwise reflect the actual order of the nodes listed in a net? (If there are no hub nodes in a particular net, then effectively the hub node for them all is the host node.)
Move code for processing the -f & -e options into a separate subroutine, so it could be used by more than just the load command?
Two additional fields are now available in the nodelist table; one for the year of the particular nodelist being worked on and is named 'ftnyear', and one for the day number of the nodelist being worked on and is named 'yearday'. Both fields have been added to the default ftnnode index. This will allow historical nodelist information in the database by being able to have more than just one of a particular type. Need to add functionality to the script and/or module to enable this, including especially being able to determine the two fields from information in the nodelist being loaded. Change load command to only load new nodelist information. Add a new 'update' command, for updating/correcting a table entry?
Add separate commands to create or drop the ftnnode index on the nodelist table?
Script does not seem to properly handle a file that ends in just blank lines, instead of a content line or a ^Z character. (Should fail gracefully for a badly formatted file.)
The list of nodelist files is being reverse sorted when there are multiple nodelists of the same basename being processed; that takes care of a set of files all from the same year but not ones that are from different years. Once ftnyear and yearday information for each file can be made available, the files can be sorted by that.
Add a test nodelist for use with this?
Use a template framework of some sort instead of the builtin 'format' operations for the reporting functionality, but perhaps keeping it as a default? Add the type field to the List command output? Redo the header (extra line)?
ftndb-admin
Remove the ftndb-admin script from the distribution once its functionality has been moved to ftndbadm.
SEE ALSO
L<ftndbadm>, L<ftndb-admim>, L<ftndb-nodelist>, L<FTNDB>, L<FTNDB::Command::create>,
L<FTNDB::Command::drop>, L<FTNDB::Nodelist>, L<FTN::Database>, L<FTN::Database::Nodelist>
AUTHOR
Robert James Clay, <jame at rocasa.us>
COPYRIGHT & LICENSE
Copyright 2012 Robert James Clay, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.