schemas
This commit is contained in:
parent
6aed763ec0
commit
399f6a6761
2 changed files with 210 additions and 0 deletions
180
surrealdb/schema.surql
Normal file
180
surrealdb/schema.surql
Normal file
|
@ -0,0 +1,180 @@
|
|||
REMOVE NAMESPACE saleor_marketplace;
|
||||
REMOVE DATABASE main;
|
||||
DEFINE NAMESPACE saleor_marketplace;
|
||||
DEFINE DATABASE main;
|
||||
USE NS saleor_marketplace;
|
||||
USE DB main;
|
||||
DEFINE TABLE saleor_app TYPE ANY SCHEMALESS
|
||||
PERMISSIONS
|
||||
FOR select
|
||||
WHERE true
|
||||
FOR update, delete
|
||||
WHERE id.id()[0] = $auth.id OR $auth.admin = true
|
||||
FOR create
|
||||
WHERE id.id()[0] = $auth.id OR $auth.admin = true //MAKE THIS QUERY FOR AMOUNT OF APPS USER HAS, LIMIT TO 20!!
|
||||
;
|
||||
DEFINE FIELD versions ON saleor_app TYPE array<string>
|
||||
PERMISSIONS FULL
|
||||
;
|
||||
DEFINE FIELD OVERWRITE versions[*] ON saleor_app TYPE string ASSERT string::is::semver($value)
|
||||
PERMISSIONS FULL
|
||||
;
|
||||
DEFINE FIELD current_version ON saleor_app TYPE string ASSERT string::is::semver($value)
|
||||
PERMISSIONS FULL
|
||||
;
|
||||
DEFINE FIELD last_updated ON saleor_app TYPE datetime VALUE time::now() ASSERT string::is::datetime($value)
|
||||
PERMISSIONS FULL
|
||||
;
|
||||
DEFINE FIELD created ON saleor_app TYPE datetime VALUE time::now() ASSERT string::is::datetime($value)
|
||||
PERMISSIONS FULL
|
||||
;
|
||||
DEFINE FIELD images ON saleor_app TYPE array<string>
|
||||
PERMISSIONS FULL
|
||||
;
|
||||
DEFINE FIELD OVERWRITE images[*] ON saleor_app TYPE string ASSERT string::is::url($value)
|
||||
PERMISSIONS FULL
|
||||
;
|
||||
DEFINE FIELD manifest ON saleor_app TYPE {
|
||||
about: option<string>,
|
||||
app_permissions: array<'MANAGE_USERS' | 'MANAGE_STAFF' | 'IMPERSONATE_USER' | 'MANAGE_OBSERVABILITY' | 'MANAGE_CHECKOUTS' | 'HANDLE_CHECKOUTS' | 'HANDLE_TAXES' | 'MANAGE_TAXES' | 'MANAGE_CHANNELS' | 'MANAGE_DISCOUNTS' | 'MANAGE_GIFT_CARD' | 'MANAGE_MENUS' | 'MANAGE_ORDERS' | 'MANAGE_ORDERS_IMPORT' | 'MANAGE_PAGES' | 'MANAGE_PAGE_TYPES_AND_ATTRIBUTES' | 'HANDLE_PAYMENTS' | 'MANAGE_PLUGINS' | 'MANAGE_PRODUCTS' | 'MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES' | 'MANAGE_SHIPPING' | 'MANAGE_SETTINGS' | 'MANAGE_TRANSLATIONS' | 'MANAGE_APPS'>,
|
||||
app_url: string,
|
||||
author: option<string>,
|
||||
brand: option<{
|
||||
logo: {
|
||||
default: string
|
||||
}
|
||||
}>,
|
||||
configuration_url: option<string>,
|
||||
data_privacy: option<string>,
|
||||
data_privacy_url: option<string>,
|
||||
extensions: option<array<{
|
||||
label: string,
|
||||
mount: 'PRODUCT_DETAILS_MORE_ACTIONS' | 'PRODUCT_OVERVIEW_CREATE' | 'PRODUCT_OVERVIEW_MORE_ACTIONS' | 'NAVIGATION_CATALOG' | 'NAVIGATION_ORDERS' | 'NAVIGATION_CUSTOMERS' | 'NAVIGATION_DISCOUNTS' | 'NAVIGATION_TRANSLATIONS' | 'NAVIGATION_PAGES' | 'ORDER_DETAILS_MORE_ACTIONS' | 'ORDER_OVERVIEW_CREATE' | 'ORDER_OVERVIEW_MORE_ACTIONS',
|
||||
permissions: array<'MANAGE_USERS' | 'MANAGE_STAFF' | 'IMPERSONATE_USER' | 'MANAGE_OBSERVABILITY' | 'MANAGE_CHECKOUTS' | 'HANDLE_CHECKOUTS' | 'HANDLE_TAXES' | 'MANAGE_TAXES' | 'MANAGE_CHANNELS' | 'MANAGE_DISCOUNTS' | 'MANAGE_GIFT_CARD' | 'MANAGE_MENUS' | 'MANAGE_ORDERS' | 'MANAGE_ORDERS_IMPORT' | 'MANAGE_PAGES' | 'MANAGE_PAGE_TYPES_AND_ATTRIBUTES' | 'HANDLE_PAYMENTS' | 'MANAGE_PLUGINS' | 'MANAGE_PRODUCTS' | 'MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES' | 'MANAGE_SHIPPING' | 'MANAGE_SETTINGS' | 'MANAGE_TRANSLATIONS' | 'MANAGE_APPS'>,
|
||||
target: 'Popup' | 'AppPage',
|
||||
url: string
|
||||
}>>,
|
||||
homepage_url: option<string>,
|
||||
id: string,
|
||||
name: string,
|
||||
required_saleor_version: option<string>,
|
||||
support_url: option<string>,
|
||||
token_target_url: string,
|
||||
version: string,
|
||||
webhooks: option<array<{
|
||||
async_events: option<array<'ANY_EVENTS' | 'ACCOUNT_CONFIRMATION_REQUESTED' | 'ACCOUNT_CHANGE_EMAIL_REQUESTED' | 'ACCOUNT_EMAIL_CHANGED' | 'ACCOUNT_SET_PASSWORD_REQUESTED' | 'ACCOUNT_CONFIRMED' | 'ACCOUNT_DELETE_REQUESTED' | 'ACCOUNT_DELETED' | 'ADDRESS_CREATED' | 'ADDRESS_UPDATED' | 'ADDRESS_DELETED' | 'APP_INSTALLED' | 'APP_UPDATED' | 'APP_DELETED' | 'APP_STATUS_CHANGED' | 'ATTRIBUTE_CREATED' | 'ATTRIBUTE_UPDATED' | 'ATTRIBUTE_DELETED' | 'ATTRIBUTE_VALUE_CREATED' | 'ATTRIBUTE_VALUE_UPDATED' | 'ATTRIBUTE_VALUE_DELETED' | 'CATEGORY_CREATED' | 'CATEGORY_UPDATED' | 'CATEGORY_DELETED' | 'CHANNEL_CREATED' | 'CHANNEL_UPDATED' | 'CHANNEL_DELETED' | 'CHANNEL_STATUS_CHANGED' | 'CHANNEL_METADATA_UPDATED' | 'GIFT_CARD_CREATED' | 'GIFT_CARD_UPDATED' | 'GIFT_CARD_DELETED' | 'GIFT_CARD_SENT' | 'GIFT_CARD_STATUS_CHANGED' | 'GIFT_CARD_METADATA_UPDATED' | 'GIFT_CARD_EXPORT_COMPLETED' | 'MENU_CREATED' | 'MENU_UPDATED' | 'MENU_DELETED' | 'MENU_ITEM_CREATED' | 'MENU_ITEM_UPDATED' | 'MENU_ITEM_DELETED' | 'ORDER_CREATED' | 'ORDER_CONFIRMED' | 'ORDER_PAID' | 'ORDER_FULLY_PAID' | 'ORDER_REFUNDED' | 'ORDER_FULLY_REFUNDED' | 'ORDER_UPDATED' | 'ORDER_CANCELLED' | 'ORDER_EXPIRED' | 'ORDER_FULFILLED' | 'ORDER_METADATA_UPDATED' | 'ORDER_BULK_CREATED' | 'FULFILLMENT_CREATED' | 'FULFILLMENT_CANCELED' | 'FULFILLMENT_APPROVED' | 'FULFILLMENT_METADATA_UPDATED' | 'FULFILLMENT_TRACKING_NUMBER_UPDATED' | 'DRAFT_ORDER_CREATED' | 'DRAFT_ORDER_UPDATED' | 'DRAFT_ORDER_DELETED' | 'SALE_CREATED' | 'SALE_UPDATED' | 'SALE_DELETED' | 'SALE_TOGGLE' | 'PROMOTION_CREATED' | 'PROMOTION_UPDATED' | 'PROMOTION_DELETED' | 'PROMOTION_STARTED' | 'PROMOTION_ENDED' | 'PROMOTION_RULE_CREATED' | 'PROMOTION_RULE_UPDATED' | 'PROMOTION_RULE_DELETED' | 'INVOICE_REQUESTED' | 'INVOICE_DELETED' | 'INVOICE_SENT' | 'CUSTOMER_CREATED' | 'CUSTOMER_UPDATED' | 'CUSTOMER_DELETED' | 'CUSTOMER_METADATA_UPDATED' | 'COLLECTION_CREATED' | 'COLLECTION_UPDATED' | 'COLLECTION_DELETED' | 'COLLECTION_METADATA_UPDATED' | 'PRODUCT_CREATED' | 'PRODUCT_UPDATED' | 'PRODUCT_DELETED' | 'PRODUCT_METADATA_UPDATED' | 'PRODUCT_EXPORT_COMPLETED' | 'PRODUCT_MEDIA_CREATED' | 'PRODUCT_MEDIA_UPDATED' | 'PRODUCT_MEDIA_DELETED' | 'PRODUCT_VARIANT_CREATED' | 'PRODUCT_VARIANT_UPDATED' | 'PRODUCT_VARIANT_DELETED' | 'PRODUCT_VARIANT_METADATA_UPDATED' | 'PRODUCT_VARIANT_OUT_OF_STOCK' | 'PRODUCT_VARIANT_BACK_IN_STOCK' | 'PRODUCT_VARIANT_STOCK_UPDATED' | 'CHECKOUT_CREATED' | 'CHECKOUT_UPDATED' | 'CHECKOUT_FULLY_PAID' | 'CHECKOUT_METADATA_UPDATED' | 'NOTIFY_USER' | 'PAGE_CREATED' | 'PAGE_UPDATED' | 'PAGE_DELETED' | 'PAGE_TYPE_CREATED' | 'PAGE_TYPE_UPDATED' | 'PAGE_TYPE_DELETED' | 'PERMISSION_GROUP_CREATED' | 'PERMISSION_GROUP_UPDATED' | 'PERMISSION_GROUP_DELETED' | 'SHIPPING_PRICE_CREATED' | 'SHIPPING_PRICE_UPDATED' | 'SHIPPING_PRICE_DELETED' | 'SHIPPING_ZONE_CREATED' | 'SHIPPING_ZONE_UPDATED' | 'SHIPPING_ZONE_DELETED' | 'SHIPPING_ZONE_METADATA_UPDATED' | 'STAFF_CREATED' | 'STAFF_UPDATED' | 'STAFF_DELETED' | 'STAFF_SET_PASSWORD_REQUESTED' | 'TRANSACTION_ITEM_METADATA_UPDATED' | 'TRANSLATION_CREATED' | 'TRANSLATION_UPDATED' | 'WAREHOUSE_CREATED' | 'WAREHOUSE_UPDATED' | 'WAREHOUSE_DELETED' | 'WAREHOUSE_METADATA_UPDATED' | 'VOUCHER_CREATED' | 'VOUCHER_UPDATED' | 'VOUCHER_DELETED' | 'VOUCHER_METADATA_UPDATED' | 'VOUCHER_CODE_EXPORT_COMPLETED' | 'OBSERVABILITY' | 'THUMBNAIL_CREATED' | 'SHOP_METADATA_UPDATED'>>,
|
||||
is_active: option<bool>,
|
||||
name: string,
|
||||
query: string,
|
||||
sync_events: option<array<'PAYMENT_LIST_GATEWAYS' | 'PAYMENT_AUTHORIZE' | 'PAYMENT_CAPTURE' | 'PAYMENT_REFUND' | 'PAYMENT_VOID' | 'PAYMENT_CONFIRM' | 'PAYMENT_PROCESS' | 'CHECKOUT_CALCULATE_TAXES' | 'ORDER_CALCULATE_TAXES' | 'TRANSACTION_CHARGE_REQUESTED' | 'TRANSACTION_REFUND_REQUESTED' | 'TRANSACTION_CANCELATION_REQUESTED' | 'SHIPPING_LIST_METHODS_FOR_CHECKOUT' | 'CHECKOUT_FILTER_SHIPPING_METHODS' | 'ORDER_FILTER_SHIPPING_METHODS' | 'PAYMENT_GATEWAY_INITIALIZE_SESSION' | 'TRANSACTION_INITIALIZE_SESSION' | 'TRANSACTION_PROCESS_SESSION' | 'LIST_STORED_PAYMENT_METHODS' | 'STORED_PAYMENT_METHOD_DELETE_REQUESTED' | 'PAYMENT_GATEWAY_INITIALIZE_TOKENIZATION_SESSION' | 'PAYMENT_METHOD_INITIALIZE_TOKENIZATION_SESSION' | 'PAYMENT_METHOD_PROCESS_TOKENIZATION_SESSION'>>,
|
||||
target_url: string
|
||||
}>>
|
||||
}
|
||||
PERMISSIONS FULL
|
||||
;
|
||||
DEFINE FIELD OVERWRITE manifest.app_url ON saleor_app TYPE string ASSERT $value.is_url()
|
||||
PERMISSIONS FULL
|
||||
;
|
||||
DEFINE FIELD OVERWRITE manifest.token_target_url ON saleor_app TYPE string ASSERT $value.is_url()
|
||||
PERMISSIONS FULL
|
||||
;
|
||||
DEFINE FIELD OVERWRITE manifest.configuration_url ON saleor_app TYPE option<string> ASSERT $value.is_url()
|
||||
PERMISSIONS FULL
|
||||
;
|
||||
DEFINE FIELD OVERWRITE manifest.data_privacy_url ON saleor_app TYPE option<string> ASSERT $value.is_url()
|
||||
PERMISSIONS FULL
|
||||
;
|
||||
DEFINE FIELD OVERWRITE manifest.homepage_url ON saleor_app TYPE option<string> ASSERT $value.is_url()
|
||||
PERMISSIONS FULL
|
||||
;
|
||||
DEFINE FIELD OVERWRITE manifest.support_url ON saleor_app TYPE option<string> ASSERT $value.is_url()
|
||||
PERMISSIONS FULL
|
||||
;
|
||||
DEFINE FIELD OVERWRITE manifest.webhooks.target_url ON saleor_app TYPE string ASSERT $value.is_url()
|
||||
PERMISSIONS FULL
|
||||
;
|
||||
DEFINE FIELD OVERWRITE manifest.extensions.url ON saleor_app TYPE string ASSERT $value.is_url()
|
||||
PERMISSIONS FULL
|
||||
;
|
||||
DEFINE FIELD is_verified ON saleor_app TYPE bool
|
||||
PERMISSIONS FULL
|
||||
;
|
||||
DEFINE FIELD supported_deployments ON saleor_app TYPE array<'Docker' | 'Podman' | 'Linux' | 'Windows' | 'MacOS' | 'WASM'>
|
||||
PERMISSIONS FULL
|
||||
;
|
||||
DEFINE FIELD built_for_url ON saleor_app TYPE option<string>
|
||||
PERMISSIONS FULL
|
||||
;
|
||||
DEFINE FIELD minimal_docker_compose ON saleor_app TYPE string
|
||||
PERMISSIONS FULL
|
||||
;
|
||||
DEFINE FIELD supported_apls ON saleor_app TYPE array<'File' | 'Redis' | 'Env' | 'Upstash'>
|
||||
PERMISSIONS FULL
|
||||
;
|
||||
DEFINE FIELD categories ON saleor_app TYPE array<'CMS' | 'Messaging' | 'Taxes' | 'Payments' | 'CRM' | 'Monitoring' | 'Marketplaces' | 'Search' | 'SEO' | 'DashboardUtilities' | 'Other'>
|
||||
PERMISSIONS FULL
|
||||
;
|
||||
DEFINE TABLE author TYPE ANY SCHEMALESS
|
||||
PERMISSIONS
|
||||
FOR select
|
||||
WHERE true
|
||||
FOR create, update, delete
|
||||
WHERE id.id()[0] = $auth.id OR $auth.admin = true
|
||||
;
|
||||
DEFINE FIELD name ON author TYPE string
|
||||
PERMISSIONS FULL
|
||||
;
|
||||
DEFINE FIELD socials ON author TYPE array<string>
|
||||
PERMISSIONS FULL
|
||||
;
|
||||
DEFINE FIELD OVERWRITE socials[*] ON author TYPE string ASSERT string::is::url($value)
|
||||
PERMISSIONS FULL
|
||||
;
|
||||
DEFINE FIELD email ON author TYPE string ASSERT string::is::email($value)
|
||||
PERMISSIONS FULL
|
||||
;
|
||||
|
||||
DELETE user:djkato;
|
||||
DELETE saleor_app:[
|
||||
user:djkato,
|
||||
'stripe-payment-gateway'
|
||||
];
|
||||
CREATE author:djkato SET name = 'Djkáťo', socials = [
|
||||
'https://twitter.com/djkato_vfx'
|
||||
], email = 'djkatovfx@gmail.com';
|
||||
CREATE saleor_app:[
|
||||
author:djkato,
|
||||
'stripe-payment-gateway'
|
||||
] SET versions = [
|
||||
'1.0.0'
|
||||
], slug = [
|
||||
author:djkato,
|
||||
'stripe-payment-gateway'
|
||||
], current_version = '1.0.0', images = [
|
||||
'https://imgur.com/g/img.jfif'
|
||||
], is_verified = false, supported_deployments = [
|
||||
'Docker'
|
||||
], minimal_docker_compose = '', categories = [
|
||||
'Payments'
|
||||
], supported_apls = [
|
||||
'Redis'
|
||||
], manifest = {
|
||||
about: 'cool stripe integration',
|
||||
app_permissions: [
|
||||
'MANAGE_USERS'
|
||||
],
|
||||
app_url: 'https://app-payment-gateway.test.com',
|
||||
author: 'Djkáťo <djkatovfx@gmail.com>',
|
||||
extensions: [],
|
||||
id: 'stripe-payment-gateway',
|
||||
name: 'Stripe Payment Gateway',
|
||||
token_target_url: 'https://app-payment-gateway.test.com/api/register',
|
||||
version: '1.0.0',
|
||||
webhooks: []
|
||||
};
|
||||
SELECT manifest FROM saleor_app:[
|
||||
user:djkato,
|
||||
NONE
|
||||
]..[
|
||||
user:djkato
|
||||
];
|
30
surrealdb/tests.surql
Normal file
30
surrealdb/tests.surql
Normal file
|
@ -0,0 +1,30 @@
|
|||
DELETE user:djkato;
|
||||
DELETE saleor_app:[user:djkato, "stripe-payment-gateway"];
|
||||
|
||||
CREATE author:djkato SET
|
||||
name = "Djkáťo",
|
||||
socials = ["https://twitter.com/djkato_vfx"],
|
||||
email = "djkatovfx@gmail.com";
|
||||
|
||||
CREATE saleor_app:[author:djkato, "stripe-payment-gateway"] SET
|
||||
versions = ["1.0.0"],
|
||||
current_version = "1.0.0",
|
||||
images = ["https://imgur.com/g/img.jfif"],
|
||||
is_verified = false,
|
||||
supported_deployments = ["Docker"],
|
||||
minimal_docker_compose = "",
|
||||
categories = ["Payments"],
|
||||
created= d"2024-09-14T20:58:53.766Z",
|
||||
last_updated = d"2024-09-14T20:58:53.766Z",
|
||||
manifest = {
|
||||
about: "cool stripe integration",
|
||||
app_permissions: ["MANAGE_USERS"],
|
||||
app_url: "https://app-payment-gateway.test.com",
|
||||
author: "Djkáťo <djkatovfx@gmail.com>",
|
||||
token_target_url: "https://app-payment-gateway.test.com/api/register",
|
||||
id: "stripe-payment-gateway",
|
||||
name: "Stripe Payment Gateway",
|
||||
version: "1.0",
|
||||
};
|
||||
|
||||
SELECT manifest FROM saleor_app:[user:djkato, NONE]..[user:djkato];
|
Loading…
Reference in a new issue