introducing junction table extension

This commit is contained in:
2026-03-09 22:42:40 +01:00
parent 47634c81ef
commit 3361cffb14
28 changed files with 1927 additions and 5 deletions

View File

@@ -0,0 +1,132 @@
#!/usr/bin/env python3
"""
Teste verschiedene API-Syntaxen für additionalColumns
"""
import requests
import json
from datetime import datetime
BASE_URL = "https://crm.bitbylaw.com"
API_KEY = "e53def10eea27b92a6cd00f40a3e09a4"
HEADERS = {
"X-Api-Key": API_KEY,
"Content-Type": "application/json"
}
def api_request(method, endpoint, data=None):
url = f"{BASE_URL}/api/v1/{endpoint}"
try:
if method == "GET":
response = requests.get(url, headers=HEADERS)
elif method == "POST":
response = requests.post(url, headers=HEADERS, json=data)
elif method == "DELETE":
response = requests.delete(url, headers=HEADERS)
return response
except Exception as e:
print(f" Exception: {e}")
return None
print("\n" + "="*80)
print(" "*20 + "API Syntax Variations Test")
print("="*80 + "\n")
doc_id = None
collection_id = None
try:
# Erstelle Test-Entities
print("Erstelle Test-Entities...")
doc = api_request("POST", "CDokumente", {
"name": f"Test Doc {datetime.now().strftime('%H:%M:%S')}"
}).json()
doc_id = doc['id']
print(f" Doc: {doc_id}")
collection = api_request("POST", "CAICollections", {
"name": f"Test Col {datetime.now().strftime('%H:%M:%S')}"
}).json()
collection_id = collection['id']
print(f" Col: {collection_id}\n")
# Teste verschiedene Syntaxen
variations = [
{
"name": "Variante 1: columns mit syncId",
"data": {
"id": collection_id,
"columns": {
"syncId": "TEST-SYNC-001"
}
}
},
{
"name": "Variante 2: Direkt syncId im Body",
"data": {
"id": collection_id,
"syncId": "TEST-SYNC-002"
}
},
{
"name": "Variante 3: columns mit sync_id (Snake-Case)",
"data": {
"id": collection_id,
"columns": {
"sync_id": "TEST-SYNC-003"
}
}
},
{
"name": "Variante 4: additionalColumns",
"data": {
"id": collection_id,
"additionalColumns": {
"syncId": "TEST-SYNC-004"
}
}
}
]
for i, variant in enumerate(variations, 1):
print(f"{i}. {variant['name']}")
# Lösche vorherige Verknüpfung
api_request("DELETE", f"CDokumente/{doc_id}/cAICollections", {"id": collection_id})
# Verknüpfe mit Variante
response = api_request("POST", f"CDokumente/{doc_id}/cAICollections", variant['data'])
print(f" Status: {response.status_code}")
if response.status_code == 200:
# Prüfe Datenbank
import subprocess
db_check = subprocess.run([
"docker", "exec", "espocrm-db", "mariadb",
"-u", "espocrm", "-pdatabase_password", "espocrm",
"-e", f"SELECT sync_id FROM c_a_i_collection_c_dokumente WHERE c_dokumente_id='{doc_id}' AND deleted=0;"
], capture_output=True, text=True)
lines = db_check.stdout.strip().split('\n')
if len(lines) > 1:
sync_id_value = lines[1].strip()
if sync_id_value and sync_id_value != "NULL":
print(f" ✅ syncId in DB: {sync_id_value}")
else:
print(f" ❌ syncId ist NULL")
else:
print(f" ⚠️ Keine Zeile in DB")
else:
print(f" ❌ Request fehlgeschlagen: {response.text[:100]}")
print()
finally:
print("Cleanup...")
if doc_id:
api_request("DELETE", f"CDokumente/{doc_id}")
if collection_id:
api_request("DELETE", f"CAICollections/{collection_id}")
print("="*80 + "\n")