Add Global vendor country region
Allow vendor country selections to use a Global region alongside existing country and EU values. The new value is accepted by backend country-code validation, exposed through GraphQL and MCP schemas, and shown in the shared country picker label set. Signed-off-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Bryan FRIMIN <bryan@frimin.fr>
This commit is contained in:
@@ -14,8 +14,9 @@
|
|||||||
|
|
||||||
type Translator = (s: string) => string;
|
type Translator = (s: string) => string;
|
||||||
|
|
||||||
// ISO 3166-1 alpha-2 country codes
|
// ISO 3166-1 alpha-2 country codes and supported regions.
|
||||||
export const countries = [
|
export const countries = [
|
||||||
|
"GLOBAL",
|
||||||
"AD", "AE", "AF", "AG", "AI", "AL", "AM", "AO", "AQ", "AR",
|
"AD", "AE", "AF", "AG", "AI", "AL", "AM", "AO", "AQ", "AR",
|
||||||
"AS", "AT", "AU", "AW", "AX", "AZ", "BA", "BB", "BD", "BE",
|
"AS", "AT", "AU", "AW", "AX", "AZ", "BA", "BB", "BD", "BE",
|
||||||
"BF", "BG", "BH", "BI", "BJ", "BL", "BM", "BN", "BO", "BQ",
|
"BF", "BG", "BH", "BI", "BJ", "BL", "BM", "BN", "BO", "BQ",
|
||||||
@@ -46,6 +47,7 @@ export const countries = [
|
|||||||
export type CountryCode = typeof countries[number];
|
export type CountryCode = typeof countries[number];
|
||||||
|
|
||||||
const countryNames: Record<CountryCode, (t: Translator) => string> = {
|
const countryNames: Record<CountryCode, (t: Translator) => string> = {
|
||||||
|
"GLOBAL": (__) => __("Global"),
|
||||||
"AD": (__) => __("Andorra"),
|
"AD": (__) => __("Andorra"),
|
||||||
"AE": (__) => __("United Arab Emirates"),
|
"AE": (__) => __("United Arab Emirates"),
|
||||||
"AF": (__) => __("Afghanistan"),
|
"AF": (__) => __("Afghanistan"),
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ export const description: INodeProperties[] = [
|
|||||||
name: 'countries',
|
name: 'countries',
|
||||||
type: 'string',
|
type: 'string',
|
||||||
default: '',
|
default: '',
|
||||||
description: 'Comma-separated list of country codes',
|
description: 'Comma-separated list of country or region codes',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
displayName: 'Data Processing Agreement URL',
|
displayName: 'Data Processing Agreement URL',
|
||||||
|
|||||||
@@ -181,7 +181,7 @@ export const description: INodeProperties[] = [
|
|||||||
name: 'countries',
|
name: 'countries',
|
||||||
type: 'string',
|
type: 'string',
|
||||||
default: '',
|
default: '',
|
||||||
description: 'Comma-separated list of country codes',
|
description: 'Comma-separated list of country or region codes',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
displayName: 'Data Processing Agreement URL',
|
displayName: 'Data Processing Agreement URL',
|
||||||
|
|||||||
@@ -25,6 +25,10 @@ type (
|
|||||||
CountryCode string
|
CountryCode string
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
CountryCodeGlobal CountryCode = "GLOBAL"
|
||||||
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
CountryCodeAD CountryCode = "AD"
|
CountryCodeAD CountryCode = "AD"
|
||||||
CountryCodeAE CountryCode = "AE"
|
CountryCodeAE CountryCode = "AE"
|
||||||
@@ -286,6 +290,7 @@ var (
|
|||||||
func (v CountryCode) IsValid() bool {
|
func (v CountryCode) IsValid() bool {
|
||||||
switch v {
|
switch v {
|
||||||
case
|
case
|
||||||
|
CountryCodeGlobal,
|
||||||
CountryCodeAD,
|
CountryCodeAD,
|
||||||
CountryCodeAE,
|
CountryCodeAE,
|
||||||
CountryCodeAF,
|
CountryCodeAF,
|
||||||
|
|||||||
16
pkg/coredata/migrations/20260528T182700Z.sql
Normal file
16
pkg/coredata/migrations/20260528T182700Z.sql
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
-- Copyright (c) 2026 Probo Inc <hello@getprobo.com>.
|
||||||
|
--
|
||||||
|
-- Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
-- purpose with or without fee is hereby granted, provided that the above
|
||||||
|
-- copyright notice and this permission notice appear in all copies.
|
||||||
|
--
|
||||||
|
-- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||||
|
-- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||||
|
-- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||||
|
-- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||||
|
-- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||||
|
-- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
|
-- PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
|
-- Add the Global region to vendor country selections.
|
||||||
|
ALTER TYPE country_code ADD VALUE 'GLOBAL' BEFORE 'AD';
|
||||||
@@ -45,6 +45,7 @@ enum OrderDirection
|
|||||||
|
|
||||||
enum CountryCode
|
enum CountryCode
|
||||||
@goModel(model: "go.probo.inc/probo/pkg/coredata.CountryCode") {
|
@goModel(model: "go.probo.inc/probo/pkg/coredata.CountryCode") {
|
||||||
|
GLOBAL @goEnum(value: "go.probo.inc/probo/pkg/coredata.CountryCodeGlobal")
|
||||||
AD @goEnum(value: "go.probo.inc/probo/pkg/coredata.CountryCodeAD")
|
AD @goEnum(value: "go.probo.inc/probo/pkg/coredata.CountryCodeAD")
|
||||||
AE @goEnum(value: "go.probo.inc/probo/pkg/coredata.CountryCodeAE")
|
AE @goEnum(value: "go.probo.inc/probo/pkg/coredata.CountryCodeAE")
|
||||||
AF @goEnum(value: "go.probo.inc/probo/pkg/coredata.CountryCodeAF")
|
AF @goEnum(value: "go.probo.inc/probo/pkg/coredata.CountryCodeAF")
|
||||||
|
|||||||
@@ -218,6 +218,7 @@ components:
|
|||||||
CountryCode:
|
CountryCode:
|
||||||
type: string
|
type: string
|
||||||
enum:
|
enum:
|
||||||
|
- GLOBAL
|
||||||
- AD
|
- AD
|
||||||
- AE
|
- AE
|
||||||
- AF
|
- AF
|
||||||
@@ -828,7 +829,7 @@ components:
|
|||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
description: Countries (ISO 3166-1 alpha-2 country codes)
|
description: Countries or regions (ISO 3166-1 alpha-2 country codes, EU, or GLOBAL)
|
||||||
business_owner_id:
|
business_owner_id:
|
||||||
anyOf:
|
anyOf:
|
||||||
- $ref: "#/components/schemas/GID"
|
- $ref: "#/components/schemas/GID"
|
||||||
@@ -1054,7 +1055,7 @@ components:
|
|||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
description: Countries (ISO 3166-1 alpha-2 country codes)
|
description: Countries or regions (ISO 3166-1 alpha-2 country codes, EU, or GLOBAL)
|
||||||
business_owner_id:
|
business_owner_id:
|
||||||
$ref: "#/components/schemas/GID"
|
$ref: "#/components/schemas/GID"
|
||||||
description: Business owner ID
|
description: Business owner ID
|
||||||
@@ -1155,7 +1156,7 @@ components:
|
|||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
description: Countries (ISO 3166-1 alpha-2 country codes)
|
description: Countries or regions (ISO 3166-1 alpha-2 country codes, EU, or GLOBAL)
|
||||||
business_owner_id:
|
business_owner_id:
|
||||||
$ref: "#/components/schemas/GID"
|
$ref: "#/components/schemas/GID"
|
||||||
description: Business owner ID
|
description: Business owner ID
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ type PageInfo {
|
|||||||
|
|
||||||
enum CountryCode
|
enum CountryCode
|
||||||
@goModel(model: "go.probo.inc/probo/pkg/coredata.CountryCode") {
|
@goModel(model: "go.probo.inc/probo/pkg/coredata.CountryCode") {
|
||||||
|
GLOBAL @goEnum(value: "go.probo.inc/probo/pkg/coredata.CountryCodeGlobal")
|
||||||
AD @goEnum(value: "go.probo.inc/probo/pkg/coredata.CountryCodeAD")
|
AD @goEnum(value: "go.probo.inc/probo/pkg/coredata.CountryCodeAD")
|
||||||
AE @goEnum(value: "go.probo.inc/probo/pkg/coredata.CountryCodeAE")
|
AE @goEnum(value: "go.probo.inc/probo/pkg/coredata.CountryCodeAE")
|
||||||
AF @goEnum(value: "go.probo.inc/probo/pkg/coredata.CountryCodeAF")
|
AF @goEnum(value: "go.probo.inc/probo/pkg/coredata.CountryCodeAF")
|
||||||
|
|||||||
Reference in New Issue
Block a user