Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make WeOS framework one that makes it easy to make SOLID applications #279

Open
3 of 4 tasks
akeemphilbert opened this issue Mar 26, 2024 · 0 comments
Open
3 of 4 tasks
Assignees
Labels
breaking-change This indicates that this ticket will most likely be a breaking change enhancement New feature or request v2

Comments

@akeemphilbert
Copy link
Contributor

akeemphilbert commented Mar 26, 2024

We've been using WeOS to create microservices. Along the way, we started using RDF to describe data in those microservices. Since RDF was not considered in the design of WeOS we've been re-implementing those concepts across many services. This update is aimed at aligning WeOS more closely with RDF and potentially the SOLID specification so that app built with WeOS would be compatible with SOLID

Plan

  • Reduce the number of subpackages to avoid cyclical references
  • Use a well accepted container and avoid rolling supporting our own
  • Upgrade the libraries we use and avoid making breaking changes to them
  • Make WeOS compatible with the solid framework
@akeemphilbert akeemphilbert added enhancement New feature or request breaking-change This indicates that this ticket will most likely be a breaking change labels Mar 26, 2024
@akeemphilbert akeemphilbert self-assigned this Mar 27, 2024
akeemphilbert added a commit that referenced this issue Mar 30, 2024
* Added Uber's fx as the dependency injection manager
* Created Producer function for insantiating and starting Echo, Command Dispatcher and Resource Repository.
* Added code to initialize a gorm connection based on the config
* Added basic route initializer that sets up the health endpoint
* Decided to go all in on everything being a resource
* Added a resource repository that will be used to persist at resource (this is an event dispatcher which projections will subscribe to)
* Added BasicResource as an event sourced resource
* Added server.go as the binary option of WeOS v2
* Copied over some of the documentation from v1
* Started working on the resource controllers
akeemphilbert added a commit that referenced this issue Mar 30, 2024
* Added interface for event store
* Setup GORM based event store
* Changed the resourced repository to have the event dispatcher injected (instead of making it implement the event dispatcher)
akeemphilbert added a commit that referenced this issue Mar 31, 2024
* Updated write controller to NOT use commands
* Added Initialize method to resource repository to instantiate resource from projection or create a new one
* Made it so that the ResourceRepository stores the reference to projections
* Added GORM projections that serves as the default projection that stores resources as well as the event store which stores the events.
* Added Routes for resources that are linked to the DefaultWriteController
akeemphilbert added a commit that referenced this issue Apr 1, 2024
* Updated command dispatcher to return typed object.
* Updated the command dispatcher to have CommandOptions to make it easier to add things the command needs
* Switched to using struct for controller params so that it's easier to update
* Updated the route initializer to set the routes from the api config and use default controllers for handlers
* Started work on adding back the CORS and zap logger middlewares
* Updated the UnmarshalJSON of resource for work around with the JSONMAP data type from Gorm
akeemphilbert added a commit that referenced this issue Apr 2, 2024
* Made it so that the port could be set via `WEOS_PORT` environment variable
* Created middleware for managing security
* Setup security in route initializer when security is setup
* Added httpClient to the container
* Updated the go version v1.22 because one of the libraries needed go v1.21
akeemphilbert added a commit that referenced this issue Apr 4, 2024
* Split up modules so that it's easier to setup the integration test without running the app
* Removed the health endpoint from the api spec since it's added automatically
* Removed the result group tag because it didn't seem to work (at least in the integration test)
* Added fixes for getting environment variables into the file as well as for the routes to be setup correctly
* Fixed reference to extension since they no longer come back as a RawMessage
* Changed the sequence number to int64
* Fixed issue where event handlers were not being triggered
* Added api config to the middleware params
* Updated the command dispatcher / handler signature so that the response is value based (not a pointer)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
breaking-change This indicates that this ticket will most likely be a breaking change enhancement New feature or request v2
Projects
None yet
Development

No branches or pull requests

1 participant