#------------------------------------------------------------------------------
#$Author: andrius $
#$Date: 2018-07-17 03:46:32 -0400 (Tue, 17 Jul 2018) $ 
#$Revision: 2229 $
#$URL: svn://saulius-grazulis.lt/restful/tags/v0.15.2/TO-DO.txt $
#------------------------------------------------------------------------------
#
# TO-DO list for the RestfulDB project.
#
-+ !! Implement database list and table list (use .htaccess redirections)
-- !! Make a separate user name table, to circumvent the MySQL user name length limit.
++ Allow different CSS'es for different databases (important now to mark test_* db's)
-- The 'restful.descriptions' should have a compatibility version number
-- References to non-existent columns in restful.descriptions should be non-fatal warnings
++ Type 'enum' fields should offer drop-down list upon edit
-- Type 'enum' value lists should be configurable in restful.description
++ Recognise non-'NOT NULL' 'enum' columns and allow choosing 'None' option
-- Recongise 'NOT NULL' foreign keys and disallow 'None' option
++ ??? 1:1 relations should be displayed more conveniently?
++ BUG: public ID is incremented on edit (it should not be)
++ Empty UUIDs are not assigned on edits – they should be
++ Introduce new revision on deleting a row.
++ Implement REST access using external keys (SolsaID, uuid)
++ Suggest current date and time for data entry date and time columns
++ !! Implement automatic suggestion of external unique IDs (table `numbers`)
++ !! Make ID suggestions from the `numbers` table user-specific
++ !! Implement automatic increment of database revision numbers
++ Implement automatic tests for revision insertion.
++ Implement URLs for CSV file download
-- FIX BUG: 'engine=SQLite2' has no effect?
++ Implement recursive display of "related" tables in a HTML page
++ Implement sorting in "related" tables
++ Implement persistent "order" parameter among different "related" tables
-- Implement XML download (with nested "related" table data)
-- ?? Implement XML upload (with nested "related" table data)
-- Implement 'is NULL' and 'not NULL' in searches
++ FIX BUG: correct paging – don't base it on ID sequence but on offset/limit
++ Improve diagnostics of uploaded CSV file names
++ Make CSV file name filtering less paranoid
++ Check that REMOTE_USER is defined before any write operations
++ Implement display of join'ed tables in data cards
-x Change the use of internal primary keys 'id'
-- Calculate page numbers correctly when displaying search results in lists
-- Calculate correct HTML list page after insertion of a new record
++ Implement table description meta-data database
++ Implement image uploads
++ Design NULL insertion from HTML forms
++ Fix search term filtering which is at the moment too paranoid
++ Implement correct parsing of CSV files
++ Add tests for CSV file parsing
++ Make error pages request format specific
-- Implement navigation controls: "goto page", "first", "last"
++ Fix navigation wrap-around at the last item
++ Implement cascaded searches (AND and OR modes)
++ Implement NOT search
++ Implement accurate CSV downloads
+- Implement arbitrary spread-sheet processing
-- Add nice CSS'es
+- REFACTOR: move common code from scripts into modules, restore SPOT
-- Implement configuration files (?)
-- Learn and use in implementations the PUT/POST distinction
+- Implement access using 'id' as a fall-back
++ Implement access to images via Web
-x Implement audit fields (not editable via Web)
-- Implement handling of "columns=" in record.pl
-- Improve diagnostics and messages
++ Create a page with a list of database tables for 'database/' requests
