restful (0.15.2)

  * Fixing problems with displaying files having Unicode symbols in their
    names.

restful (0.15.1)

  * Encoding entities in resolved values.
  * Fixing problems with unquoted table names and column names.
  * Implementing marking of tables as read-only.
  * Allowing VIEW data to be downloaded in GUI.
  * Deriving content type for BLOB contents instead of printing
    default values of 'image/png'.

restful (0.15.0)

  * Optimizing navigation carousel performance
  * Reducing the number and complexity of SQL queries
  * Fixed the duplicate values of the related tables in the entry
    creation/editing forms.
  * Ceasing to display files and images with NULL content.
  * Responding HTTP 204 to requests for contents of NULL files.
  * Supporting value suggestions common to all users.
  * Using alternative column name with the least ID when there is more
    than one of them.
  * Adding warnings if the spreadsheet is empty or not supplied to the
    upload.
  * Separating spreadsheet data and template download input fields.
  * Ceasing to resolve URLs for NULL values.
  * Ceasing to execute 'SELECT * FROM <table>' in image.pl.
  * Updating to OPTIMADE::Filter v0.10.0.
  * Renaming table name in new, edit and record HTML when the table has
    multiple references to the same table.
  * Displaying measurement units in HTML tables.
  * Implementing auto-detection of spreadsheet type when uploading to the
    database.
  * Fixing ODS spreadsheet downloads.
  * Fixing UTF16 processing in XLS uploads.
  * Supporting per-column printf-compatible formats.
  * Unifying spreadsheet upload and download GUI.
  * Renaming Spreadsheet module to RestfulDB::Spreadsheet.
  * Reporting the inability to detect foreign key relations in uploaded
    spreadsheets as error.
  * Removing 'New' and 'Edit' buttons from cards of entries of views.

restful (0.14.2)

  * Implementing search for foreign keys record by using the values of
    related tables instead of their ids.
  * Ceasing to force-convert non-numeric XLSX dates, as they may already
    encode date in correct formats.
  * Implementing support for alternative column names.
  * Unset column type no longer acts as 'data' column type.
  * Dropping support for unused 'document_group' metatable.
  * Displaying invalid values (those that do not match regular expressions)
    in error messages.
  * Validating dates using 'validation_regex' mechanism.
  * Allowing RFC 3339 date-time values in SQLite databases.
  * Trimming overly precise dates for MySQL DATE data type.
  * Fixing issue with empty lines in XLSX format downloads.
  * Displaying files without contents as empty ones.
  * Fixing the issue concerning with the records that have multiple foreign
    keys pointing to the same table.

restful (0.14.1)

  * Implementing navigation through records when not default id column
    is selected.
  * Switching from flex tables to non-flex tables on page displays.
  * Adding vertical border lines between table columns.
  * Implementing support of 'cdatetime' column type.
  * Updating to OPTIMADE::Filter v0.8.0.
  * Canonicalizing table names in filters in order to support uppercase
    letters in table names in MariaDB/MySQL.
  * Ceasing to recognize columns ending in '<table>_id' as foreign key
    columns if table '<table>' does not exist.
  * Reordering tabs in spreadsheet downloads by bringing the main table to
    the front.
  * Ceasing to include empty tables in spreadsheet data downloads.
  * Moving methods from CSV.pm to Spreadsheet.pm, dropping CSV.pm.
  * Column type 'data' overrides the recognition of '*url' columns as
    containing URL-valued data.
  * Fixing non-numeric ID column support.
  * Fixing value suggestions in databases with historic tables.
  * Removing duplicate columns from table previews.
  * Fixing UPSERT functionality in POSTing JSON to tables.
  * Preserving significance of large or very precise numbers.

restful (0.14.0)

  * Adding table column sorting buttons on mobile display.
  * Adding the fields hiding functionality.
  * Removing hardcoded ID column names.
  * Supporting record IDs equal to 0.
  * Fixing the logic of last inserted ID retrieval.
  * Fixing handling of nonexistent record external keys.
  * Fixing ordering of related tables.
  * All parent key columns are provided and handled in spreadsheet
    downloads and uploads, respectively.
  * Fixing crashes caused by overlong sheet names in XLSX.
  * Reporting nonexistent parent records for foreign key relations.
  * Reporting record insertion conflicts as HTTP 403 errors.
  * Handling 'columns_add' and 'columns_remove' query string parameters
    in db.pl.
  * Ceasing to handle 'columns_exclude' as it is covered by
    'columns_remove' now.
  * Renaming query string parameter 'idColumn' to 'id_column'.
  * Returning the total number of matched records in JSON format responses.
  * Removing data of parent records from the JSON format responses.
  * Treating the comma-separated values of 'columns' query string
    parameter as column name prefixes.
  * Allowing empty search values in the search form.
  * Fixing the regex validation when the new record entry is added in new or
    edit forms.
  * Implementing the cleaning of input fields of the last record entry in new or
    edit forms.
  * Implementing mass deletion of records.
  * Making URL links for related tables point to selections of filtered
    child entries.
  * Switching from IO::String::LWP to Object::Lazy.
  * Ceasing to lock tables due to lock interference with transactions.
  * Ceasing to hide FKs to inaccessible parent records.
  * Fixing empty blob insertion in edit form.
  * Ceasing to show spreadsheet GUI for views.
  * Responding to record creation with HTTP 201 and updates with HTTP 200.
  * POST to an existing record with JSON is treated as UPSERT on MySQL
    databases.
  * Fixing a performance problem in modify.pl.
  * External keys in URLs are sufficient to create or modify a record.
  * Display of related views in read-only mode can be enabled using
    'description'.'visualisation' field in metadatabase.
  * Adding capability for 'Remove Entry' button to hide table in 'Edit' and 'New'
    forms.
  * UPSERT no longer regenerates UUIDs.
  * Values for column types 'uuid', 'url', 'cssclass', 'mimetype', 'cdate'
    and 'ctype' can no longer be empty strings.
  * Fixing a problem with uploads of empty files.
  * Requiring the presence of at least one generateable non-NULL field value
    in order to create a new record.
  * Bringing back support for ID-less tables.
  * Renaming action input fields from 'column:<table_path>.<column>' to
    'action:<table_path>'.

restful (0.13.1)

  * Fixing regular expression to parse database name from URL.

restful (0.13.0)

  * Adding GPL-2 license.
  * Adding Database::get_grants() method.
  * Detecting unauthorized access exception in MySQL databases.
  * Reporting query string validation problems as HTTP 400 errors instead
    of HTTP 500.
  * Reporting filter parsing errors as HTTP 400.
  * Displaying warnings in HTML, JSON and JSON API output formats.
  * Memorizing previously submitted parameters of the search form.
  * Processing query string parameters for multipart/form-data requests.
  * Honoring 'rows' and 'offset' parameters for all response formats.
  * Supporting identification of SQLite databases by their base names.
  * Providing templates for related tables upon request for CSV, ODS, XLS
    and XLSX formats (requires Spreadsheet::Wright >= 0.106).
  * Naming worksheets of templates after table names.
  * Filling templates with generated UUID values.
  * Implementing downloads of related tables in CSV, ODS, XLS and XLSX
    formats.
  * Implementing the upload of ZIP archives of CSV, ODS, XLS and XLSX files
    through POST method.
  * Adding spreadsheet upload and download GUIs.
  * Using OPTiMaDe::Filter v0.5.0 to parse/compose filter language strings.
  * Not returning the same resource objects over and over again in JSON
    API format output.
  * Reporting endpoint mismatch with HTTP 409 in JSON API format input.
  * JSON parsing problems are reported with HTTP 400 errors.
  * No longer requiring unique identifiers in JSON PATCH requests.
  * JSON PUT requests to already existing entries now fail.
  * Fixing support for textual foreign keys.
  * Returning the original value of external key upon deletion of already
    non-existing records.
  * Ceasing to show views in HTML forms for record creation and updating.
  * Ceasing to show 'New' buttons for views in related table displays.
  * Enforcing NOT NULL constraints prior to inserting and updating records.
  * Using validation regular expressions to select matching external key
    column.
  * Enforcing UUID validation.
  * Displaying UUID fields in single record previews.
  * Displaying UUID columns in vertical (a. k. a. card) displays.
  * Supporting newline symbols in CSV input and output.

restful (0.12.1)

  * Returning the same response for initial and subsequent requests to
    insert the same record.

restful (0.12.0)

  * Enhancing error reporting for nonexisting databases and insufficient
    permissions to access them.
  * Fixing error reporting in JSONAPI format.
  * Reporting errors in JSON format.
  * Responding to DELETE requests in JSON/JSONAPI formats.
  * Supporting PUT (insert data) and PATCH (update data) HTTP request
    methods.
  * Responding with HTTP 400 Bad Request to 'include' parameter, as per
    JSON API specification.
  * Accepting requests with direct submission of spreadsheet data.
  * Implementing 'imguri' column type.
  * Introducing metadatabase-configurable means to hide and unhide
    specific columns, as well as hide columns with no values.
  * Supporting simple views defined via SQL 'USING'.
  * Supporting views defined via 'SELECT * from table' and
    'SELECT table.* from table'.
  * Explicitly returning SQLite3 PRIMARY KEYs as unique.
  * Implementing proper table name unaliasing in views.
  * Implementing alternative authentication to the database ("username-
    hashing").

restful (0.11.0)

  * Detecting and reporting unused form fields.
  * Implementing per-database metadatabases.
  * Robustly dealing with id-less tables.
  * Removing /<database>/<table>/template endpoint, use
    /<database>/<table>?action=template instead.
  * Removing /<database>/<table>/upload endpoint, use POST to
    /<database>/<table> instead.
  * New records are created by POSTing data to /<database>/<table> now.
  * Implementing client-side checking of entered input fields.
  * Supporting filter language from OPTiMaDe v0.10.0 specification by
    using OPTiMaDe::FilterParser v0.2.0.
  * Enhancing the style of the Web GUI.
  * Implementing default ordering.

restful (0.10.0)

  * Switching to HTML5.
  * Renaming module JSONGenerator to RestfulDB::JSON.
  * No longer automatically inserting current date and current time values
    into 'cdate' and 'ctime' columns.
  * Implementing record field validation using regular expressions.
  * Using 'select2' JavaScript library to implement searchable drop-down
    lists.
  * Filtering out non-unique MySQL columns in Database::get_unique_columns().
  * Handling HTTP DELETE requests to remove individual records.
  * Fixing wrongly assigned anchor links to the tables when they are being
    sorted.
  * Bringing back special handling of 'extkey' columns, which has
    disappeared in v0.9.0.
  * Allowing resolvers be attached to columns of any column type.
  * Implementing 'depth' parameter in db.pl and record.pl to limit the
    depth of returned JSON data structures.
  * Representing numbers in '%11.6g' format in HTML forms.
  * Implementing JSONAPI support.
  * Not showing "Prev" and "Next" buttons for tables fitting into a single
    page.
  * Implementing record creation by POSTing record data to
    /<database>/<table> URIs.
  * Implementing 'columns_exclude' parameter for db.pl to exclude specific
    columns from the result page.
  * Dropping GET request support in csv.pl.
  * Moving speadsheet parsing and conversion to new module Spreadsheet.pm.
  * Joining insert and update functionality - new records can be added
    through edit form.
  * Differentiating HTTP error codes.
  * Fixing JSON insertion into BLOB-typed fields.

restful (0.9.1)

  * Fixing unique key discovery on MySQL engine.

restful (0.9.0)

  * Fixing external key resolution.
  * Limiting external key suggestion to sample.SolsaID column.
  * Fixing a bug with passing filter= QS from one table to another.
  * Extending inserted record recognition beyond UUIDs to all unique
    simple keys.
  * Surrounding column names in quotes in ON DUPLICATE UPDATE clause as
    generated by Database::prepare_insert_record().
  * Fixing data insertion into simple views.
  * Using standard routines to upload spreadsheet data.
  * Displaying MySQL SET entry fields as checkboxes.
  * Fixing a bug in FK update.
  * Accepting/returning SQL SET column values as JSON arrays.
  * Fixing the view of external link icon in Chrome browser.
  * Adding "download" attribute to HTML <a>...</a> to instruct Web browsers
    to download files instead of opening them in the browser.
  * Implementing handling of uploaded file names.
  * Implementing handling of uploaded file MD5 checksums.
  * Fixing the unability to edit specific records that have multiple
    columns pointing to the same table.
  * Ignoring empty record insertion even if it has enumerator without NULL.
  * Restricting submission of forms with empty mandatory fields using HTML
    means.

restful (0.8.0)

  * Fixing the visualization and the data insertion/update for the tables that
    have multiple foreign key columns pointing to the same parent table.
  * Implementing user-defined foreign key formats.
  * Implementing user-defined external key resolvers.
  * Displaying MySQL SET entry fields as drop-down selections with all
    subsets of their allowed values.

restful (0.7.0)

  * Implementing composite foreign key support.
  * Moving code related to database record ordering to a new module
    Database::Order.
  * Improving the visualisation of new/edit record GUI.

restful (0.6.1)

  * Fixing performance issue in foreign key reading, which caused
    considerable lag.

restful (0.6.0)

  * Implementing recursive generation of the input forms.
  * Removing deprecated methods from Database.pm.
  * Using sql_mode=TRADITIONAL (MySQL) to avoid unwanted casting.
  * Implementing uploads by URL.
  * Reading foreign key definitions from SQL schema.
  * Fixing confused 'fk_target' and 'fk_value' keys in DOMs.
  * Replacing UUID to record id in the redirect URL after new record is created.
  * Replacing traditional hyperlink to image of external-link above tables and forms.

restful (0.5.0-rc1)

  * Implementing HTML display using universal recursive subroutine, to be used also for input forms

restful (0.4.0)

  * Displaying related tables in one page with the main table
  * Displaying images
  * Sorting related table entries
  * Editing and creating one table at a time
  * Reading table descriptions from metatables in the "restful" database

restful (0.3.0)

  * Implementing column sorting interface for single tables

restful (0.2.0)

  * Adding style-sheets
  * Fixing UTF-8 handling

restful (0.1.0)

  * Initial release
