Skip to content

aramovic79/xreg-github

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

xreg-github

Implementation of the xRegistry spec.

Still a long way to go.

To run it:

# You need to have Docker installed

# Start a mysql server. Give it about 30 seconds to fully start
$ make mysql

# Run the tests & xreg server (creates a new DB each time):
$ make

or to use existing DB (no tests):
$ make start

Try it:

# In a browser go to:
  http://localhost:8080?reg

# Or just:
$ curl http://localhost:8080
$ curl http://localhost:8080?inline

# To run a mysql client to see the DBs:
$ make mysql-client

OLD TODO:

  • Move the logic that takes the Path into account for the query into GenerateQuery
  • Make sure that the Path entity is always in the result set when filtering
  • twiddle the self and XXXUrls to include proper filter and inline stuff
  • see if we can get rid of the recursion stuff
  • should we add "/" to then end of the Path for non-collections, then we can just look for PATH/% and not PATH + PATH/%
  • can we set the registry's path to "" instead of NULL ?? already did, test it
  • add support for boolean types (set/get/filter)

TODOs:

  • add tests for multiple registries at the same time

  • test filtering for (non)empty values - e.g. filter=id= filter=id

    • empty complex types too
  • test for filtering case-insensitive string compares

  • test for filtering with string being part of value

  • test for exact match of numerics, bools

  • add complex filters testcases

  • copy all of the types tests in http from Reg to groups, resources and vers

  • test to make sure an ID in the body == ID in URL for reg and group

  • test to ensure we can do 2 tx at the same time

  • need to decide on the best tx isolation level

  • add http test for maxVersions (already have non-http tests)

  • see if we can prepend Path with / or append it with /

  • see if we can remove all uses of JustSet except for the few testing cases where we need to set a property w/o verifying/saving it

    • Just see if we can clean-up the Set... stuff in general
  • convert internal errors into "panic" so any "error" returned is a user error

  • see if we can move "#resource??" into the attributes struct

  • fix it so that a failed call to model.Save() (e.g. verify fails) doesn't invalidate existing local variables. See if we can avoid redownloading the model from the DB

  • make sure we check for uniqueness of IDs - they're case insensitive and unique within the scope of their parent

  • make sure we throw an error if ?specversion on HTTP requests specifies the wrong version

  • make sure we have tests for resource.readonly - in particular DELETE

  • pagination

  • have DB generate the COLLECTIONcount attributes so people can query over them and we don't need the code to calculate them (can we due to filters?)

  • add checks for valid obj/map key names in new validation funcs ****

  • support overriding spec defined attributes - like "format"

  • support changing the model - test for invalid changes

  • add tests for immutable attributes

  • support the resource sticky/default attributes

    • remove ?setdefault.. for some apis
    • process ?setdefaultversionid flag before we update things
    • make sure we support them as http headers too
  • support createdat and modifiedat as http headers

  • make sure we don't let go http add "content-type" header for docs w/o a value

  • add support for PUT / to update the model

  • add model tests for typemap - just that we can set via full model updates

  • support the DB vanishing for a while

  • create an UpdateDefaultVersion func in resource.go to move it from http logic

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 99.4%
  • Other 0.6%