Add CentralLogging stack, Covance/EDC sources, email import + IWRS scripts
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
================================================================================
|
||||
Nazev: create_email_indexes_v1.0.py
|
||||
Verze: 1.0
|
||||
Datum: 2026-06-08
|
||||
Autor: Vladimir Buzalka (asistovano Claude)
|
||||
Popis: Vytvori slozene indexy na kolekci emailu vbuzalka@its.jnj.com
|
||||
v databazi `emaily` pro rychle vyhledavani:
|
||||
- { recipients.email: 1, received_at: -1 } -> prijemce + datum
|
||||
- { sender.email: 1, received_at: -1 } -> odesilatel + datum
|
||||
Indexy jsou v pozadi (background) a idempotentni (create_index
|
||||
nic neudela, kdyz uz existuji se stejnym klicem/nazvem).
|
||||
Pozn.: Pred spustenim ukazat nahled; vytvoreni indexu je nedestruktivni.
|
||||
================================================================================
|
||||
"""
|
||||
|
||||
import sys
|
||||
from datetime import datetime
|
||||
|
||||
from pymongo import MongoClient, ASCENDING, DESCENDING
|
||||
|
||||
MONGO_HOST = "192.168.1.76"
|
||||
DB_NAME = "emaily"
|
||||
COLLECTION = "vbuzalka@its.jnj.com"
|
||||
|
||||
INDEXES = [
|
||||
{
|
||||
"name": "recipients.email_1_received_at_-1",
|
||||
"keys": [("recipients.email", ASCENDING), ("received_at", DESCENDING)],
|
||||
},
|
||||
{
|
||||
"name": "sender.email_1_received_at_-1",
|
||||
"keys": [("sender.email", ASCENDING), ("received_at", DESCENDING)],
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
def log(msg: str) -> None:
|
||||
print(f"[{datetime.now():%Y-%m-%d %H:%M:%S}] {msg}", flush=True)
|
||||
|
||||
|
||||
def main() -> int:
|
||||
log(f"Pripojuji se k MongoDB ({MONGO_HOST}) ...")
|
||||
client = MongoClient(MONGO_HOST, serverSelectionTimeoutMS=5000)
|
||||
client.admin.command("ping")
|
||||
coll = client[DB_NAME][COLLECTION]
|
||||
log(f"OK. Kolekce {DB_NAME}.{COLLECTION} ma {coll.estimated_document_count():,} dokumentu.")
|
||||
|
||||
log("Stavajici indexy:")
|
||||
for name, spec in coll.index_information().items():
|
||||
log(f" - {name}: {spec.get('key')}")
|
||||
|
||||
for idx in INDEXES:
|
||||
log(f"Vytvarim index '{idx['name']}' ...")
|
||||
created = coll.create_index(idx["keys"], name=idx["name"], background=True)
|
||||
log(f" -> hotovo: {created}")
|
||||
|
||||
log("Indexy po vytvoreni:")
|
||||
for name, spec in coll.index_information().items():
|
||||
log(f" - {name}: {spec.get('key')}")
|
||||
|
||||
client.close()
|
||||
log("Hotovo.")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
Reference in New Issue
Block a user