Add "Canceled" banner
This commit is contained in:
		
							parent
							
								
									c06bfb989e
								
							
						
					
					
						commit
						7faed3ee1e
					
				
					 9 changed files with 39 additions and 12 deletions
				
			
		|  | @ -63,7 +63,8 @@ const ( | |||
| 			stripe_customer_id TEXT, | ||||
| 			stripe_subscription_id TEXT, | ||||
| 			stripe_subscription_status TEXT, | ||||
| 			stripe_subscription_paid_until INT,			 | ||||
| 			stripe_subscription_paid_until INT, | ||||
| 			stripe_subscription_cancel_at INT, | ||||
| 			created_by TEXT NOT NULL, | ||||
| 			created_at INT NOT NULL, | ||||
| 			last_seen INT NOT NULL, | ||||
|  | @ -103,20 +104,20 @@ const ( | |||
| 	` | ||||
| 
 | ||||
| 	selectUserByNameQuery = ` | ||||
| 		SELECT u.user, u.pass, u.role, u.prefs, u.sync_topic, u.stats_messages, u.stats_emails, u.stripe_customer_id, u.stripe_subscription_id, u.stripe_subscription_status, u.stripe_subscription_paid_until, p.code, p.name, p.paid, p.messages_limit, p.messages_expiry_duration, p.emails_limit, p.reservations_limit, p.attachment_file_size_limit, p.attachment_total_size_limit, p.attachment_expiry_duration, p.stripe_price_id | ||||
| 		SELECT u.user, u.pass, u.role, u.prefs, u.sync_topic, u.stats_messages, u.stats_emails, u.stripe_customer_id, u.stripe_subscription_id, u.stripe_subscription_status, u.stripe_subscription_paid_until, u.stripe_subscription_cancel_at, p.code, p.name, p.paid, p.messages_limit, p.messages_expiry_duration, p.emails_limit, p.reservations_limit, p.attachment_file_size_limit, p.attachment_total_size_limit, p.attachment_expiry_duration, p.stripe_price_id | ||||
| 		FROM user u | ||||
| 		LEFT JOIN tier p on p.id = u.tier_id | ||||
| 		WHERE user = ?		 | ||||
| 	` | ||||
| 	selectUserByTokenQuery = ` | ||||
| 		SELECT u.user, u.pass, u.role, u.prefs, u.sync_topic, u.stats_messages, u.stats_emails, u.stripe_customer_id, u.stripe_subscription_id, u.stripe_subscription_status, u.stripe_subscription_paid_until, p.code, p.name, p.paid, p.messages_limit, p.messages_expiry_duration, p.emails_limit, p.reservations_limit, p.attachment_file_size_limit, p.attachment_total_size_limit, p.attachment_expiry_duration, p.stripe_price_id | ||||
| 		SELECT u.user, u.pass, u.role, u.prefs, u.sync_topic, u.stats_messages, u.stats_emails, u.stripe_customer_id, u.stripe_subscription_id, u.stripe_subscription_status, u.stripe_subscription_paid_until, u.stripe_subscription_cancel_at , p.code, p.name, p.paid, p.messages_limit, p.messages_expiry_duration, p.emails_limit, p.reservations_limit, p.attachment_file_size_limit, p.attachment_total_size_limit, p.attachment_expiry_duration, p.stripe_price_id | ||||
| 		FROM user u | ||||
| 		JOIN user_token t on u.id = t.user_id | ||||
| 		LEFT JOIN tier p on p.id = u.tier_id | ||||
| 		WHERE t.token = ? AND t.expires >= ? | ||||
| 	` | ||||
| 	selectUserByStripeCustomerIDQuery = ` | ||||
| 		SELECT u.user, u.pass, u.role, u.prefs, u.sync_topic, u.stats_messages, u.stats_emails, u.stripe_customer_id, u.stripe_subscription_id, u.stripe_subscription_status, u.stripe_subscription_paid_until, p.code, p.name, p.paid, p.messages_limit, p.messages_expiry_duration, p.emails_limit, p.reservations_limit, p.attachment_file_size_limit, p.attachment_total_size_limit, p.attachment_expiry_duration, p.stripe_price_id | ||||
| 		SELECT u.user, u.pass, u.role, u.prefs, u.sync_topic, u.stats_messages, u.stats_emails, u.stripe_customer_id, u.stripe_subscription_id, u.stripe_subscription_status, u.stripe_subscription_paid_until, u.stripe_subscription_cancel_at , p.code, p.name, p.paid, p.messages_limit, p.messages_expiry_duration, p.emails_limit, p.reservations_limit, p.attachment_file_size_limit, p.attachment_total_size_limit, p.attachment_expiry_duration, p.stripe_price_id | ||||
| 		FROM user u | ||||
| 		LEFT JOIN tier p on p.id = u.tier_id | ||||
| 		WHERE u.stripe_customer_id = ? | ||||
|  | @ -236,7 +237,7 @@ const ( | |||
| 
 | ||||
| 	updateBillingQuery = ` | ||||
| 		UPDATE user  | ||||
| 		SET stripe_customer_id = ?, stripe_subscription_id = ?, stripe_subscription_status = ?, stripe_subscription_paid_until = ? | ||||
| 		SET stripe_customer_id = ?, stripe_subscription_id = ?, stripe_subscription_status = ?, stripe_subscription_paid_until = ?, stripe_subscription_cancel_at = ? | ||||
| 		WHERE user = ? | ||||
| 	` | ||||
| ) | ||||
|  | @ -607,11 +608,11 @@ func (a *Manager) readUser(rows *sql.Rows) (*User, error) { | |||
| 	var stripeCustomerID, stripeSubscriptionID, stripeSubscriptionStatus, stripePriceID, tierCode, tierName sql.NullString | ||||
| 	var paid sql.NullBool | ||||
| 	var messages, emails int64 | ||||
| 	var messagesLimit, messagesExpiryDuration, emailsLimit, reservationsLimit, attachmentFileSizeLimit, attachmentTotalSizeLimit, attachmentExpiryDuration, stripeSubscriptionPaidUntil sql.NullInt64 | ||||
| 	var messagesLimit, messagesExpiryDuration, emailsLimit, reservationsLimit, attachmentFileSizeLimit, attachmentTotalSizeLimit, attachmentExpiryDuration, stripeSubscriptionPaidUntil, stripeSubscriptionCancelAt sql.NullInt64 | ||||
| 	if !rows.Next() { | ||||
| 		return nil, ErrUserNotFound | ||||
| 	} | ||||
| 	if err := rows.Scan(&username, &hash, &role, &prefs, &syncTopic, &messages, &emails, &stripeCustomerID, &stripeSubscriptionID, &stripeSubscriptionStatus, &stripeSubscriptionPaidUntil, &tierCode, &tierName, &paid, &messagesLimit, &messagesExpiryDuration, &emailsLimit, &reservationsLimit, &attachmentFileSizeLimit, &attachmentTotalSizeLimit, &attachmentExpiryDuration, &stripePriceID); err != nil { | ||||
| 	if err := rows.Scan(&username, &hash, &role, &prefs, &syncTopic, &messages, &emails, &stripeCustomerID, &stripeSubscriptionID, &stripeSubscriptionStatus, &stripeSubscriptionPaidUntil, &stripeSubscriptionCancelAt, &tierCode, &tierName, &paid, &messagesLimit, &messagesExpiryDuration, &emailsLimit, &reservationsLimit, &attachmentFileSizeLimit, &attachmentTotalSizeLimit, &attachmentExpiryDuration, &stripePriceID); err != nil { | ||||
| 		return nil, err | ||||
| 	} else if err := rows.Err(); err != nil { | ||||
| 		return nil, err | ||||
|  | @ -631,6 +632,7 @@ func (a *Manager) readUser(rows *sql.Rows) (*User, error) { | |||
| 			StripeSubscriptionID:        stripeSubscriptionID.String,                                // May be empty | ||||
| 			StripeSubscriptionStatus:    stripe.SubscriptionStatus(stripeSubscriptionStatus.String), // May be empty | ||||
| 			StripeSubscriptionPaidUntil: time.Unix(stripeSubscriptionPaidUntil.Int64, 0),            // May be zero | ||||
| 			StripeSubscriptionCancelAt:  time.Unix(stripeSubscriptionCancelAt.Int64, 0),             // May be zero | ||||
| 		}, | ||||
| 	} | ||||
| 	if err := json.Unmarshal([]byte(prefs), user.Prefs); err != nil { | ||||
|  | @ -875,7 +877,7 @@ func (a *Manager) CreateTier(tier *Tier) error { | |||
| } | ||||
| 
 | ||||
| func (a *Manager) ChangeBilling(user *User) error { | ||||
| 	if _, err := a.db.Exec(updateBillingQuery, nullString(user.Billing.StripeCustomerID), nullString(user.Billing.StripeSubscriptionID), nullString(string(user.Billing.StripeSubscriptionStatus)), nullInt64(user.Billing.StripeSubscriptionPaidUntil.Unix()), user.Name); err != nil { | ||||
| 	if _, err := a.db.Exec(updateBillingQuery, nullString(user.Billing.StripeCustomerID), nullString(user.Billing.StripeSubscriptionID), nullString(string(user.Billing.StripeSubscriptionStatus)), nullInt64(user.Billing.StripeSubscriptionPaidUntil.Unix()), nullInt64(user.Billing.StripeSubscriptionCancelAt.Unix()), user.Name); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	return nil | ||||
|  |  | |||
|  | @ -90,6 +90,7 @@ type Billing struct { | |||
| 	StripeSubscriptionID        string | ||||
| 	StripeSubscriptionStatus    stripe.SubscriptionStatus | ||||
| 	StripeSubscriptionPaidUntil time.Time | ||||
| 	StripeSubscriptionCancelAt  time.Time | ||||
| } | ||||
| 
 | ||||
| // Grant is a struct that represents an access control entry to a topic by a user | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue