feat(donate): Add donate api (#17459)

* feat(donate): Add donate api

* feat(donation): Add ability to track donations via email
This commit is contained in:
Stuart Taylor
2018-06-07 22:35:06 +01:00
committed by Quincy Larson
parent 3f61c1356f
commit 4f77da02be
12 changed files with 332 additions and 21 deletions

15
server/models/donation.js Normal file
View File

@@ -0,0 +1,15 @@
import { Observable } from 'rx';
export default function(Donation) {
Donation.on('dataSourceAttached', () => {
Donation.findOne$ = Observable.fromNodeCallback(
Donation.findOne.bind(Donation)
);
Donation.prototype.validate$ = Observable.fromNodeCallback(
Donation.prototype.validate
);
Donation.prototype.destroy$ = Observable.fromNodeCallback(
Donation.prototype.destroy
);
});
}

View File

@@ -0,0 +1,68 @@
{
"name": "Donation",
"plural": "donations",
"description": "A representaion of a donation to freeCodeCamp",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"email": {
"type": "string",
"required": true,
"description": "The email used to create the donation"
},
"provider": {
"type": "string",
"required": true,
"description": "The payment handler, paypal/stripe etc..."
},
"amount": {
"type": "number",
"required": true,
"description": "The donation amount in cents"
},
"startDate": {
"type": "DateString",
"required": true
},
"endDate": {
"type": "DateString"
},
"subscriptionId": {
"type": "string",
"required": true,
"description": "The donation subscription id returned from the provider"
},
"customerId": {
"type": "string",
"required": true,
"description": "The providers reference for the donator"
}
},
"hidden": [],
"validations": [
{
"amount": {
"type": "number",
"description": "Amount should be >= $1 (100c)",
"min": 100
}
}
],
"relations": {
"user": {
"type": "belongsTo",
"model": "user",
"foreignKey": "userId"
}
},
"acls": [],
"scopes": {},
"indexes" : {},
"methods": [],
"remoting": {},
"http": {}
}