Support live Caveau plan enum

This commit is contained in:
2026-05-08 17:15:41 +02:00
parent 62dbb8d900
commit 3282db7c19
+38 -3
View File
@@ -37,10 +37,45 @@ function setupJson(array $value): string
return json_encode($value, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); return json_encode($value, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
} }
function setupEnumValues(PDO $db, string $table, string $column): array
{
$stmt = $db->prepare(
'SELECT COLUMN_TYPE
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ? AND COLUMN_NAME = ?
LIMIT 1'
);
$stmt->execute([$table, $column]);
$type = (string)$stmt->fetchColumn();
if (!preg_match("/^enum\\((.*)\\)$/", $type, $matches)) {
return [];
}
$values = str_getcsv($matches[1], ',', "'");
return array_values(array_filter(array_map('strval', $values)));
}
function setupPreferredValue(array $available, array $preferred, string $fallback): string
{
foreach ($preferred as $value) {
if (in_array($value, $available, true)) {
return $value;
}
}
return $available[0] ?? $fallback;
}
try { try {
$db = dbnToolsDb(); $db = dbnToolsDb();
$db->beginTransaction(); $db->beginTransaction();
$plan = setupPreferredValue(
setupEnumValues($db, 'clients', 'plan'),
['enterprise', 'sovereign', 'corporate', 'professional', 'beta', 'starter', 'trial', 'sandbox'],
'professional'
);
$client = dbnToolsFetchClient($db); $client = dbnToolsFetchClient($db);
if (!$client) { if (!$client) {
$apiKeyHash = hash('sha256', random_bytes(32)); $apiKeyHash = hash('sha256', random_bytes(32));
@@ -52,7 +87,7 @@ try {
'contact_email' => $email, 'contact_email' => $email,
'industry' => 'Legal services', 'industry' => 'Legal services',
'country' => 'NO', 'country' => 'NO',
'plan' => 'enterprise', 'plan' => $plan,
'api_key_hash' => $apiKeyHash, 'api_key_hash' => $apiKeyHash,
'api_key_prefix' => $apiKeyPrefix, 'api_key_prefix' => $apiKeyPrefix,
'monthly_query_limit' => 10000, 'monthly_query_limit' => 10000,
@@ -91,7 +126,7 @@ try {
'contact_email' => $email, 'contact_email' => $email,
'industry' => 'Legal services', 'industry' => 'Legal services',
'country' => 'NO', 'country' => 'NO',
'plan' => 'enterprise', 'plan' => $plan,
'monthly_query_limit' => 10000, 'monthly_query_limit' => 10000,
'monthly_document_limit' => 1000, 'monthly_document_limit' => 1000,
'monthly_user_limit' => 25, 'monthly_user_limit' => 25,
@@ -151,7 +186,7 @@ try {
'Family Legal', 'Family Legal',
'Family law corpus package for Do Better Norge legal tools.', 'Family law corpus package for Do Better Norge legal tools.',
'LAW', 'LAW',
setupJson(['enterprise']), setupJson([$plan]),
]); ]);
$packageId = (int)$db->lastInsertId(); $packageId = (int)$db->lastInsertId();
} else { } else {