mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-09-29 04:43:32 +00:00
schema, api
This commit is contained in:
@@ -441,6 +441,9 @@ Remote controller app version range (min and max as version strings).
|
||||
InvalidCode:
|
||||
- type: "invalidCode"
|
||||
|
||||
InvalidReceipt:
|
||||
- type: "invalidReceipt"
|
||||
|
||||
ServiceNotConfigured:
|
||||
- type: "serviceNotConfigured"
|
||||
|
||||
@@ -477,6 +480,7 @@ CredentialNotVerified:
|
||||
- "payment_not_entitled"
|
||||
- "payment_pending"
|
||||
- "provider_unavailable"
|
||||
- "provider_not_configured"
|
||||
- "rate_limited"
|
||||
- "code_invalid"
|
||||
- "code_used"
|
||||
|
||||
@@ -249,6 +249,7 @@ export interface BadgeProof {
|
||||
|
||||
export type BadgeRedeemError =
|
||||
| BadgeRedeemError.InvalidCode
|
||||
| BadgeRedeemError.InvalidReceipt
|
||||
| BadgeRedeemError.ServiceNotConfigured
|
||||
| BadgeRedeemError.BadgeActive
|
||||
| BadgeRedeemError.ServiceError
|
||||
@@ -259,6 +260,7 @@ export type BadgeRedeemError =
|
||||
export namespace BadgeRedeemError {
|
||||
export type Tag =
|
||||
| "invalidCode"
|
||||
| "invalidReceipt"
|
||||
| "serviceNotConfigured"
|
||||
| "badgeActive"
|
||||
| "serviceError"
|
||||
@@ -274,6 +276,10 @@ export namespace BadgeRedeemError {
|
||||
type: "invalidCode"
|
||||
}
|
||||
|
||||
export interface InvalidReceipt extends Interface {
|
||||
type: "invalidReceipt"
|
||||
}
|
||||
|
||||
export interface ServiceNotConfigured extends Interface {
|
||||
type: "serviceNotConfigured"
|
||||
}
|
||||
@@ -312,6 +318,7 @@ export enum BadgeServiceErrorCode {
|
||||
Payment_not_entitled = "payment_not_entitled",
|
||||
Payment_pending = "payment_pending",
|
||||
Provider_unavailable = "provider_unavailable",
|
||||
Provider_not_configured = "provider_not_configured",
|
||||
Rate_limited = "rate_limited",
|
||||
Code_invalid = "code_invalid",
|
||||
Code_used = "code_used",
|
||||
|
||||
@@ -188,6 +188,9 @@ class BadgeProof(TypedDict):
|
||||
class BadgeRedeemError_invalidCode(TypedDict):
|
||||
type: Literal["invalidCode"]
|
||||
|
||||
class BadgeRedeemError_invalidReceipt(TypedDict):
|
||||
type: Literal["invalidReceipt"]
|
||||
|
||||
class BadgeRedeemError_serviceNotConfigured(TypedDict):
|
||||
type: Literal["serviceNotConfigured"]
|
||||
|
||||
@@ -210,6 +213,7 @@ class BadgeRedeemError_credentialNotVerified(TypedDict):
|
||||
|
||||
BadgeRedeemError = (
|
||||
BadgeRedeemError_invalidCode
|
||||
| BadgeRedeemError_invalidReceipt
|
||||
| BadgeRedeemError_serviceNotConfigured
|
||||
| BadgeRedeemError_badgeActive
|
||||
| BadgeRedeemError_serviceError
|
||||
@@ -218,9 +222,9 @@ BadgeRedeemError = (
|
||||
| BadgeRedeemError_credentialNotVerified
|
||||
)
|
||||
|
||||
BadgeRedeemError_Tag = Literal["invalidCode", "serviceNotConfigured", "badgeActive", "serviceError", "invalidResponse", "unknownKeyIndex", "credentialNotVerified"]
|
||||
BadgeRedeemError_Tag = Literal["invalidCode", "invalidReceipt", "serviceNotConfigured", "badgeActive", "serviceError", "invalidResponse", "unknownKeyIndex", "credentialNotVerified"]
|
||||
|
||||
BadgeServiceErrorCode = Literal["bad_request", "unsupported_version", "unknown_purchase_key", "unknown_offer_id", "offer_disabled", "offer_mismatch", "product_unavailable", "payment_not_entitled", "payment_pending", "provider_unavailable", "rate_limited", "code_invalid", "code_used", "code_expired", "receipt_invalid", "receipt_used", "internal"]
|
||||
BadgeServiceErrorCode = Literal["bad_request", "unsupported_version", "unknown_purchase_key", "unknown_offer_id", "offer_disabled", "offer_mismatch", "product_unavailable", "payment_not_entitled", "payment_pending", "provider_unavailable", "provider_not_configured", "rate_limited", "code_invalid", "code_used", "code_expired", "receipt_invalid", "receipt_used", "internal"]
|
||||
|
||||
BadgeStatus = Literal["active", "expired", "expiredOld", "failed", "unknownKey"]
|
||||
|
||||
|
||||
@@ -279,7 +279,8 @@ CREATE TABLE test_chat_schema.badge_purchases (
|
||||
issue_failed_since timestamp with time zone,
|
||||
issue_error_at timestamp with time zone,
|
||||
issue_error text,
|
||||
next_wake_at timestamp with time zone
|
||||
next_wake_at timestamp with time zone,
|
||||
badge_store_receipt_id bigint
|
||||
);
|
||||
|
||||
|
||||
@@ -295,6 +296,30 @@ ALTER TABLE test_chat_schema.badge_purchases ALTER COLUMN badge_purchase_id ADD
|
||||
|
||||
|
||||
|
||||
CREATE TABLE test_chat_schema.badge_store_receipts (
|
||||
badge_store_receipt_id bigint NOT NULL,
|
||||
user_id bigint NOT NULL,
|
||||
provider text NOT NULL,
|
||||
transaction_ref text NOT NULL,
|
||||
purchase_key bytea NOT NULL,
|
||||
purchase_priv_key bytea NOT NULL,
|
||||
master_key bytea NOT NULL,
|
||||
created_at timestamp with time zone NOT NULL
|
||||
);
|
||||
|
||||
|
||||
|
||||
ALTER TABLE test_chat_schema.badge_store_receipts ALTER COLUMN badge_store_receipt_id ADD GENERATED ALWAYS AS IDENTITY (
|
||||
SEQUENCE NAME test_chat_schema.badge_store_receipts_badge_store_receipt_id_seq
|
||||
START WITH 1
|
||||
INCREMENT BY 1
|
||||
NO MINVALUE
|
||||
NO MAXVALUE
|
||||
CACHE 1
|
||||
);
|
||||
|
||||
|
||||
|
||||
CREATE TABLE test_chat_schema.calls (
|
||||
call_id bigint NOT NULL,
|
||||
contact_id bigint NOT NULL,
|
||||
@@ -1793,6 +1818,16 @@ ALTER TABLE ONLY test_chat_schema.badge_purchases
|
||||
|
||||
|
||||
|
||||
ALTER TABLE ONLY test_chat_schema.badge_store_receipts
|
||||
ADD CONSTRAINT badge_store_receipts_pkey PRIMARY KEY (badge_store_receipt_id);
|
||||
|
||||
|
||||
|
||||
ALTER TABLE ONLY test_chat_schema.badge_store_receipts
|
||||
ADD CONSTRAINT badge_store_receipts_provider_transaction_ref_key UNIQUE (provider, transaction_ref);
|
||||
|
||||
|
||||
|
||||
ALTER TABLE ONLY test_chat_schema.calls
|
||||
ADD CONSTRAINT calls_pkey PRIMARY KEY (call_id);
|
||||
|
||||
@@ -2192,10 +2227,18 @@ CREATE UNIQUE INDEX idx_badge_purchases_code_redemption ON test_chat_schema.badg
|
||||
|
||||
|
||||
|
||||
CREATE UNIQUE INDEX idx_badge_purchases_store_receipt ON test_chat_schema.badge_purchases USING btree (badge_store_receipt_id);
|
||||
|
||||
|
||||
|
||||
CREATE INDEX idx_badge_purchases_user ON test_chat_schema.badge_purchases USING btree (user_id);
|
||||
|
||||
|
||||
|
||||
CREATE INDEX idx_badge_store_receipts_user ON test_chat_schema.badge_store_receipts USING btree (user_id);
|
||||
|
||||
|
||||
|
||||
CREATE INDEX idx_calls_chat_item_id ON test_chat_schema.calls USING btree (chat_item_id);
|
||||
|
||||
|
||||
@@ -2994,11 +3037,21 @@ ALTER TABLE ONLY test_chat_schema.badge_purchases
|
||||
|
||||
|
||||
|
||||
ALTER TABLE ONLY test_chat_schema.badge_purchases
|
||||
ADD CONSTRAINT badge_purchases_badge_store_receipt_id_fkey FOREIGN KEY (badge_store_receipt_id) REFERENCES test_chat_schema.badge_store_receipts(badge_store_receipt_id);
|
||||
|
||||
|
||||
|
||||
ALTER TABLE ONLY test_chat_schema.badge_purchases
|
||||
ADD CONSTRAINT badge_purchases_user_id_fkey FOREIGN KEY (user_id) REFERENCES test_chat_schema.users(user_id) ON DELETE CASCADE;
|
||||
|
||||
|
||||
|
||||
ALTER TABLE ONLY test_chat_schema.badge_store_receipts
|
||||
ADD CONSTRAINT badge_store_receipts_user_id_fkey FOREIGN KEY (user_id) REFERENCES test_chat_schema.users(user_id) ON DELETE CASCADE;
|
||||
|
||||
|
||||
|
||||
ALTER TABLE ONLY test_chat_schema.calls
|
||||
ADD CONSTRAINT calls_chat_item_id_fkey FOREIGN KEY (chat_item_id) REFERENCES test_chat_schema.chat_items(chat_item_id) ON DELETE CASCADE;
|
||||
|
||||
|
||||
@@ -938,6 +938,7 @@ CREATE TABLE badge_purchases(
|
||||
issue_error_at TEXT,
|
||||
issue_error TEXT,
|
||||
next_wake_at TEXT,
|
||||
badge_store_receipt_id INTEGER REFERENCES badge_store_receipts,
|
||||
UNIQUE(purchase_key)
|
||||
) STRICT;
|
||||
CREATE TABLE badge_ledger(
|
||||
@@ -981,6 +982,17 @@ CREATE TABLE badge_code_redemptions(
|
||||
created_at TEXT NOT NULL,
|
||||
UNIQUE(user_id, code)
|
||||
) STRICT;
|
||||
CREATE TABLE badge_store_receipts(
|
||||
badge_store_receipt_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
user_id INTEGER NOT NULL REFERENCES users ON DELETE CASCADE,
|
||||
provider TEXT NOT NULL,
|
||||
transaction_ref TEXT NOT NULL,
|
||||
purchase_key BLOB NOT NULL,
|
||||
purchase_priv_key BLOB NOT NULL,
|
||||
master_key BLOB NOT NULL,
|
||||
created_at TEXT NOT NULL,
|
||||
UNIQUE(provider, transaction_ref)
|
||||
) STRICT;
|
||||
CREATE INDEX contact_profiles_index ON contact_profiles(
|
||||
display_name,
|
||||
full_name
|
||||
@@ -1544,6 +1556,10 @@ CREATE INDEX idx_badge_code_redemptions_user ON badge_code_redemptions(
|
||||
CREATE UNIQUE INDEX idx_badge_purchases_code_redemption ON badge_purchases(
|
||||
badge_code_redemption_id
|
||||
);
|
||||
CREATE INDEX idx_badge_store_receipts_user ON badge_store_receipts(user_id);
|
||||
CREATE UNIQUE INDEX idx_badge_purchases_store_receipt ON badge_purchases(
|
||||
badge_store_receipt_id
|
||||
);
|
||||
CREATE TRIGGER on_group_members_insert_update_summary
|
||||
AFTER INSERT ON group_members
|
||||
FOR EACH ROW
|
||||
|
||||
Reference in New Issue
Block a user