Commit Graph

50 Commits

Author SHA1 Message Date
Drew
5518edc2a5 Postgres adapter (#2012)
* 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
2016-06-12 16:35:13 -07:00
Drew
d559cb2382 Move transform acl (#2021)
* 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
2016-06-12 13:39:41 -07:00
Drew
7e868b2dcc Unique indexes (#1971)
* 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
2016-06-10 20:27:21 -07:00
Drew
cd525802a6 Remove mongoFind and mostly remove adaptiveCollection (#1924)
* 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
2016-05-28 12:25:09 -04:00
Drew
c9a138d9ca Break schemaController dependency. (#1901)
* 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
2016-05-24 17:21:20 -07:00
Drew Gross
3ed3c7b62f Move more mongo specific stuff into mongo adapter 2016-05-23 21:16:03 -07:00
Drew Gross
d428041a83 Consistent parameter order 2016-05-23 20:22:04 -07:00
Drew Gross
a763f7c2fc move transformWhere into mongo adapter 2016-05-23 20:19:03 -07:00
Drew Gross
135b0e0254 Remove options from count 2016-05-23 20:15:51 -07:00
Drew Gross
e444ca8425 Can't sort a count 2016-05-23 20:12:03 -07:00
Drew Gross
aa072dabff Remove limit from count 2016-05-23 20:09:59 -07:00
Drew Gross
c9be5a3aac Destructure mongo options 2016-05-23 20:07:16 -07:00
Drew Gross
14938bbe7a create + use adapter count instead of collection count 2016-05-23 19:00:58 -07:00
Drew Gross
1ae1d42c32 transformWhere in MongoAdapter 2016-05-23 18:39:34 -07:00
Drew Gross
4052470820 remove schemaController paramater 2016-05-23 18:39:34 -07:00
Drew Gross
7dca7e20b0 Remove schemaController parameter 2016-05-23 18:39:34 -07:00
Drew Gross
474a893a22 Pass the Parse Schema into untransform 2016-05-23 18:39:34 -07:00
Drew
614e1ac8e5 Move query logic into mongo (#1885)
* 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
2016-05-23 19:31:51 -04:00
Drew Gross
c416cad43f remove extra special keys list 2016-05-18 18:59:52 -07:00
Drew Gross
5165c80570 Remove validate parameter from deleteObjectsByQuery 2016-05-18 18:56:47 -07:00
Drew Gross
643bdc8227 Move query validation out of mongo adapter 2016-05-18 18:56:47 -07:00
Drew Gross
15fc186a51 Extract query validation logic 2016-05-18 18:56:47 -07:00
Drew Gross
ea09213511 lift query key validation out of transformWhere 2016-05-18 18:56:47 -07:00
Drew Gross
559205bc64 Lift no-query-ACL validation out of transformWhere 2016-05-18 18:56:47 -07:00
Marco Cheung
19e7407f55 Return correct error when violating unique index (#1763) 2016-05-11 17:24:15 -07:00
Drew Gross
71ae7bee94 better names and comments 2016-04-26 13:08:58 -07:00
Drew Gross
449ca115b1 Break object deletions's dependency on schemaController 2016-04-26 10:23:14 -07:00
Drew Gross
d4bd21fcbc remove schema from transformWhere 2016-04-26 10:20:17 -07:00
Drew Gross
4371ca164c Pass parse format schema to transformWhere 2016-04-25 22:45:16 -07:00
Drew
234d0093ff Cleanup delete schema (#1604)
* Some cleanup for deleting one schema

* tidyness

* Remove _allCollections as Parse Server doesn't need it.
2016-04-25 14:47:57 -04:00
Drew
d14d451028 Move acl adding into parse server (#1601)
* Move writeACL knowledge out of mongoAdapter

* Remove write ACL from mongo adapter

* Remove readACL from Mongo Transform
2016-04-22 21:44:03 -04:00
Drew
0d094767cf Cleanup update (#1590)
* 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
2016-04-22 17:05:21 -04:00
Drew
9776362ab2 Begin isolating object creation code into an externalizable API. (#1569)
* 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
2016-04-20 13:35:48 -07:00
Drew
cecb2a1cb1 Move 'ns not found' into mongo adapter. (#1541) 2016-04-18 17:06:51 -07:00
Drew
ab0ea09067 Schema.js cleanup (#1540)
* Tidy up schemas router

* de-duplicate logic for injecting default schemas

* Remove no-op promise

* use hasClass

* Make getAllSchemas part of SchemaController

* Move getOneSchema logic onto schema controller

* remove log
2016-04-18 17:06:00 -07:00
Drew
ac839f75c7 Remove mongo object create format from Parse Server (#1516) 2016-04-18 12:45:48 -04:00
Florent Vilmart
1023baf20d DBController refactoring (#1228)
* 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
2016-04-14 19:24:56 -04:00
Drew
fc1cdd4408 Remove collection prefix and default mongo URI (#1479)
* 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
2016-04-13 19:45:07 -04:00
Drew
3fb3ce1ab7 Store collection prefix in mongo adapter, and clean up adapter interface (#1472) 2016-04-13 08:21:53 -04:00
Drew
512251eb58 Move field deletion logic into mongo adapter (#1471) 2016-04-12 22:06:58 -04:00
Benjamin Woodruff
530fad5a58 Move mongoUrl to src/vendor
And add a README to src/vendor
2016-03-16 14:54:52 -07:00
Benjamin Woodruff
836582fdb1 Fix failing tests for uri encoding auth
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.
2016-03-16 14:31:44 -07:00
Benjamin Woodruff
a30c81745a Add URI encoding to mongo auth parameters
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).
2016-03-16 14:31:44 -07:00
steven-supersolid
dbf2afc5ea Add database options to ParseServer constructor and pass to MongoStorageAdapter 2016-03-10 16:49:45 +00:00
Nikita Lutsenko
2730398b92 Add new MongoSchemaCollection class that manages schemas for all collections. 2016-03-09 15:20:59 -08:00
Nikita Lutsenko
49994b6e87 Add MongoCollection and adaptiveCollection abstraction to MongoAdapter. 2016-03-01 22:36:23 -08:00
Nikita Lutsenko
2733c0924b Remove direct mongo access from Schema.spec.js. 2016-02-29 19:47:08 -08:00
Nikita Lutsenko
028ef2a7b2 Remove dependency on raw mongo from SchemaRouter.delete. 2016-02-29 19:47:08 -08:00
Nikita Lutsenko
eb892830e6 Move and cleanup getting collections into MongoStorageAdapter. 2016-02-29 12:51:43 -08:00
Nikita Lutsenko
997da898eb Split mongodb connection creation from DatabaseController. 2016-02-29 12:50:47 -08:00