Introduce a commercial license option alongside AGPL-3.0-only, require a CLA for contributors, and document the terms in COMMERCIAL.md and NOTICE. Add a script to stamp SPDX headers on Go files and apply it across the tree.
140 lines
3.9 KiB
Go
140 lines
3.9 KiB
Go
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Commercial
|
|
// SPDX-FileCopyrightText: 2025-2026 Christian Galo
|
|
|
|
// Code generated by sqlc. DO NOT EDIT.
|
|
// versions:
|
|
// sqlc v1.29.0
|
|
// source: subscription_items.sql
|
|
|
|
package billing
|
|
|
|
import (
|
|
"context"
|
|
)
|
|
|
|
const createSubscriptionItem = `-- name: CreateSubscriptionItem :one
|
|
INSERT INTO core.subscription_items (subscription_id, product_id, price_id, quantity)
|
|
VALUES ($1, $2, $3, $4)
|
|
RETURNING subscription_item_id, subscription_id, product_id, price_id, quantity, created_at, updated_at
|
|
`
|
|
|
|
type CreateSubscriptionItemParams struct {
|
|
SubscriptionID string `json:"subscription_id"`
|
|
ProductID string `json:"product_id"`
|
|
PriceID string `json:"price_id"`
|
|
Quantity int32 `json:"quantity"`
|
|
}
|
|
|
|
func (q *Queries) CreateSubscriptionItem(ctx context.Context, arg CreateSubscriptionItemParams) (SubscriptionItem, error) {
|
|
row := q.db.QueryRowContext(ctx, createSubscriptionItem,
|
|
arg.SubscriptionID,
|
|
arg.ProductID,
|
|
arg.PriceID,
|
|
arg.Quantity,
|
|
)
|
|
var i SubscriptionItem
|
|
err := row.Scan(
|
|
&i.SubscriptionItemID,
|
|
&i.SubscriptionID,
|
|
&i.ProductID,
|
|
&i.PriceID,
|
|
&i.Quantity,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const getSubscriptionItemByID = `-- name: GetSubscriptionItemByID :one
|
|
SELECT subscription_item_id, subscription_id, product_id, price_id, quantity, created_at, updated_at FROM core.subscription_items
|
|
WHERE subscription_item_id = $1
|
|
`
|
|
|
|
func (q *Queries) GetSubscriptionItemByID(ctx context.Context, subscriptionItemID string) (SubscriptionItem, error) {
|
|
row := q.db.QueryRowContext(ctx, getSubscriptionItemByID, subscriptionItemID)
|
|
var i SubscriptionItem
|
|
err := row.Scan(
|
|
&i.SubscriptionItemID,
|
|
&i.SubscriptionID,
|
|
&i.ProductID,
|
|
&i.PriceID,
|
|
&i.Quantity,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const getSubscriptionItemsBySubscriptionID = `-- name: GetSubscriptionItemsBySubscriptionID :many
|
|
SELECT subscription_item_id, subscription_id, product_id, price_id, quantity, created_at, updated_at FROM core.subscription_items
|
|
WHERE subscription_id = $1
|
|
ORDER BY created_at ASC
|
|
`
|
|
|
|
func (q *Queries) GetSubscriptionItemsBySubscriptionID(ctx context.Context, subscriptionID string) ([]SubscriptionItem, error) {
|
|
rows, err := q.db.QueryContext(ctx, getSubscriptionItemsBySubscriptionID, subscriptionID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
items := []SubscriptionItem{}
|
|
for rows.Next() {
|
|
var i SubscriptionItem
|
|
if err := rows.Scan(
|
|
&i.SubscriptionItemID,
|
|
&i.SubscriptionID,
|
|
&i.ProductID,
|
|
&i.PriceID,
|
|
&i.Quantity,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Close(); err != nil {
|
|
return nil, err
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const updateSubscriptionItemPriceProduct = `-- name: UpdateSubscriptionItemPriceProduct :one
|
|
UPDATE core.subscription_items
|
|
SET product_id = $2, price_id = $3, quantity = $4
|
|
WHERE subscription_item_id = $1
|
|
RETURNING subscription_item_id, subscription_id, product_id, price_id, quantity, created_at, updated_at
|
|
`
|
|
|
|
type UpdateSubscriptionItemPriceProductParams struct {
|
|
SubscriptionItemID string `json:"subscription_item_id"`
|
|
ProductID string `json:"product_id"`
|
|
PriceID string `json:"price_id"`
|
|
Quantity int32 `json:"quantity"`
|
|
}
|
|
|
|
// Converge a core item row after an in-place Stripe price modification (paid->paid
|
|
// switch): the Stripe item id is unchanged but it now carries a new price/product.
|
|
func (q *Queries) UpdateSubscriptionItemPriceProduct(ctx context.Context, arg UpdateSubscriptionItemPriceProductParams) (SubscriptionItem, error) {
|
|
row := q.db.QueryRowContext(ctx, updateSubscriptionItemPriceProduct,
|
|
arg.SubscriptionItemID,
|
|
arg.ProductID,
|
|
arg.PriceID,
|
|
arg.Quantity,
|
|
)
|
|
var i SubscriptionItem
|
|
err := row.Scan(
|
|
&i.SubscriptionItemID,
|
|
&i.SubscriptionID,
|
|
&i.ProductID,
|
|
&i.PriceID,
|
|
&i.Quantity,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
)
|
|
return i, err
|
|
}
|