ducky/subscriptions

Paddy 2015-06-22 Parent:61c4ce5850da

3:b240b6123548 Go to Latest

ducky/subscriptions/sql/postgres_init.sql

Export all subscriptionStore methods. We're not going to wrap all our subscriptionStore interactions in a Context type, so we need to expose all the functions so other packages can call them. Also, it's now SubscriptionStore. Also creates a SubscriptionRequest type that is used to create a new Subscription instance, along with a Validate method on it, to detect errors when creating a SubscriptionRequest. Update our CreateSubscription function to be New, and have it take a SubscriptionRequest, a Stripe instance, and a SubscriptionStore as arguments. It'll create the Subscription in the SubscriptionStore, create a customer in Stripe, and create the subscription in Stripe, then associate the Stripe subscription with the created Subscription. Also, fix our StripeSubscriptionChange function to correctly equate a missing/zero Unix timestamp from Stripe with a missing/zero time.Time.

History
1 CREATE TABLE IF NOT EXISTS subscriptions (
2 user_id VARCHAR(36) PRIMARY KEY,
3 stripe_subscription VARCHAR(36) UNIQUE NOT NULL,
4 plan VARCHAR(36) NOT NULL,
5 status VARCHAR(16) NOT NULL,
6 canceling BOOLEAN NOT NULL,
7 created TIMESTAMPTZ NOT NULL,
8 trial_start TIMESTAMPTZ NOT NULL,
9 trial_end TIMESTAMPTZ NOT NULL,
10 period_start TIMESTAMPTZ NOT NULL,
11 period_end TIMESTAMPTZ NOT NULL,
12 canceled_at TIMESTAMPTZ NOT NULL,
13 failed_charge_attempts INTEGER NOT NULL,
14 last_failed_charge TIMESTAMPTZ NOT NULL,
15 last_notified TIMESTAMPTZ NOT NULL
16 );