Skip to content

Dojo Data Middleware #524

@agubler

Description

@agubler

One of the most common uses of application state or application state store is working with CRUD style resources, managing the status of resource requests, fetching resources, creating resources, updating resources and more. This is currently possible using a solution such as @dojo/framework/stores but requires significant investment on the user to model data, manage statuses, fetch/update/create resources and enabling the application to provide feedback to the user (loading, failed etc).

Proposal

Create a first class API built for working with resources throughout Dojo applications. The idea is that the user would not need any intimate knowledge about how the resource data is stored.

This would use the new middleware for function-based and allow users to customise the API for the specific resource type and use this as normal within application. The "data" middleware should be able to support the complete range of CRUD related scenarios when working with resources:

  • Fully typed, customisable API
  • Fetching and caching resource items
  • Return resource items from the cache
  • Creation of new resource items
  • Update existing resource items
  • Remove existing resource items
  • Support optimistic updates for all operations
  • Pagination Support
  • Automatic reverting of changes for failed operations
  • Resource loading support
  • Expose statuses of specific operations based on action type i.e. read, create, update and resource identifier
  • Management of changes/operations when there are one or more in-flight requests
  • Provide customisable Restful configuration for working with remote REST resources

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: coreCorearea: storesStoresenhancementNew feature or requestnextIssue/Pull Request for the next major version

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions