* Remove adaptiveCollection
* Remove an adaptiveCollection use
* Remove an adaptiveCollection
* make adaptiveCollection private
* Remove collection from mongoadapter
* Move schema collection usage into mongo adapter
* stop relying on mongo format for removing join tables
* reduce usage of schemaCollection
* remove uses of _collection
* Move CLP setting into mongo adapter
* remove all uses of schemaCollection
* make schemaCollection private
* remove transform from schemaCollection
* rename some stuff
* Tweak paramaters and stuff
* reorder some params
* reorder find() arguments
* finishsh touching up argument order
* Accept a database adapter as a parameter
* First passing test with postgres!
* Actually use the provided className
* index on unique-indexes: c454180 Revert "Log objects rather than JSON stringified objects (#1922)"
* Start dealing with test shittyness
* Make specific server config for tests async
* Fix email validation
* Fix broken cloud code
* Save callback to variable
* undo
* Fix tests
* Setup travis
* fix travis maybe
* try removing db user
* indentation?
* remove postgres version setting
* sudo maybe?
* use postgres username
* fix check for _PushStatus
* excludes
* remove db=mongo
* allow postgres to fail
* Fix allow failure
* postgres 9.4
* Remove mongo implementations and fix test
* Fix test leaving behind connections
* Move ACL transforming into Parse Server
For the database adapters, it will be more performant and easier to work with _rperm and _wperm than with the ACL object. This way we can type it as an array and so on, and once we have stronger validations in Parse Server, we can type it as an array containing strings of length < x, which will be much much better in sql databases.
* Use destructuring
* Add unique indexing
* Add unique indexing for username/email
* WIP
* Finish unique indexes
* Notes on how to upgrade to 2.3.0 safely
* index on unique-indexes: c454180 Revert "Log objects rather than JSON stringified objects (#1922)"
* reconfigure username/email tests
* Start dealing with test shittyness
* Remove tests for files that we are removing
* most tests passing
* fix failing test
* Make specific server config for tests async
* Fix more tests
* fix more tests
* Fix another test
* fix more tests
* Fix email validation
* move some stuff around
* Destroy server to ensure all connections are gone
* Fix broken cloud code
* Save callback to variable
* no need to delete non existant cloud
* undo
* Fix all tests where connections are left open after server closes.
* Fix issues caused by missing gridstore adapter
* Update guide for 2.3.0 and fix final tests
* use strict
* don't use features that won't work in node 4
* Fix syntax error
* Fix typos
* Add duplicate finding command
* Update 2.3.0.md
* Use adapter.count
* use adapter.upsertOneObject
* Use adapter.deleteObjectsByQuery
* Use adapter.find
* use adapter.find
* Update tests to avoid mongoFind
* Fix a test to not use mongoFind
* Fix a test to not use mongoFind
* remove some mongoFind
* Remove some mongoFind
* Remove some mongoFind
* Remove more mongoFind
* remove more mongoFind
* remove more mongoFind
* remove more mongoFind
* remove more mongoFind
* remove more mongoFind
* remove more mongoFind
* remove more mongoFind
* remove more mongoFind
* Restore update ios device token with duplicate device token to original
* remove a mongoFind
* remove a mongoFind
* formatting
* formatting
* remove a mongoFind
* remove a mongoFind
* remove a mongoFind
* kill mongoFind
* Fix tests
* Fix tests
* fix syntax
* Fix test
* Break dependency on MongoCollection for updateMany
* Move transformWhere usage into MongoTransform
* Pass parse schema into transformUpdate
* break dependency on schemaController
* remove schema parameter
* move key name validation up one level
* Move validation out of mongo adapter
* Move validation into Parse Server and transformUpdate in Mongo Adapter
* Update mongo adapter
* Use adapter API
* use and fix mongo adapter api
* Remove/rename stuff
* Kill transform in DBController
* better imports for transform
* Tidy ConfigRouter
* Remove schemaController in more places
* Remove comment
* Move Parse Server logic into Parse Server and out of MongoAdapter
* Move untransforming up one level
* Make find() in MongoStorageAdapter
* Put nested object untransforming into it's own function
* Simplfy nested untransform
* Don't mess with inner object keys called _auth_data_*
* Prevent untransforming inner object keys named _p_*
* Fix inner keys named _rperm, _wperm
* Fix bugs with inner objects behaving strange when other fields have same name as key in specific circumstances
* remove params from untransform nested object
* Revert changes to find
* destructuring in DB controller
* deleteObject in db adapter
* Turns out we can't have delete by object ID because of ACLs...
* Fix tests
* destructure acl
* Don't reject with object
* Tidy up transformKeyValue
* Specialize transformKeyValue for object creation
* remove keys that never appear in creation requests
* rename function
* remove local var
* early exit for simple keys
* Refactor create
* Force class creation when creating an object
* Pass parameters to key value transformer
* No need to check for array in this func
* start using Parse Format schema in MongoTransform
* Remove call to getExpectedType
* add tests to ensure client can't see _PushStatus
* Moves transform to MongoTransform
- Adds ACL query injection in MongoTransform
* Removes adaptiveCollection from DatabaseController
- All collections manipulations are now handled by a DBController
- Adds optional flags to configure an unsafe databaseController for direct
access
- Adds ability to configure RestWrite with multiple writes
- Moves some transfirmations to MongoTransform as they output specific code
* Renames Unsafe to WithoutValidation
* Remove collection prefix from DB Controller
* Remove collection prefix from cache
* Revert "Remove collection prefix from cache"
This reverts commit 529d67dd617b64c69c36a8a63382456e95edcab8.
* Remove knowledge of default mongo URI from Parse Server
* Remove adaptive collection paramater from deleteFields
* Tidy up DBAdapter.js
This uses a *slightly* patched version of node's uri module to allow
commas and colons in hostnames, which causes the parsed representation
of replica sets to be less-awful.
Hostname are still somewhat broken in this representation, because we
have an array of hosts expressed as a list, but this is the
minimum-effort solution to getting format to be able to reprint a parsed
replica set correctly.
I understand that we probably don't want to merge this (for a lot of
reasons), but at least this shows exactly where the issue is, and yields
some useful discussion.
The mongodb driver requires auth values be URI encoded:
044063097d
This uses node's built-in url module to encode the auth portion, by
parsing and re-formatting it, which causes special characters to get URI
encoded properly:
https://nodejs.org/api/url.html#url_escaped_characters
This is all a bit silly since mongodb just takes our passed uri, and
runs it through the same url parser again, but not before explicitly
erroring on '@' characters in the uri.
This is similiar to #148 (reverted by #297), but with much less code,
and hopefully less breakage. Also, note that `uri_decode_auth` is no
longer needed. That was removed in the above referenced
node-mongodb-native commit.
I've tested this on usernames and passwords with @, !, +, and a space.
Presumably this would also work with usernames and passwords that are
already URI encoded (since parseUrl will simply unescape it, and
formatUrl will escape it again).