منصوبے کے بارے میں
QueryAPIGate ایک خود میزبان، واحد Flask سروس ہے جو آپ کے ڈیٹا بیسز پر SQL چلاتی ہے اور نتائج JSON، NDJSON، XML، YAML، CSV، TSV، یا Excel کی صورت میں واپس کرتی ہے۔ ایک استفسار کو ایک بار محفوظ کریں اور یہ ٹائپ شدہ، انجیکشن سے محفوظ پیرامیٹرز اور رن ہسٹری کے ساتھ ایک ورژن شدہ REST اینڈ پوائنٹ بن جاتا ہے، بغیر کنٹرولرز، ریپوزٹری لیئرز، پیجینیشن، آتھ، یا سیریلائزیشن بوائلر پلیٹ لکھنے کے۔
ملٹی ڈیٹا بیس سپورٹ میں MySQL، PostgreSQL، ClickHouse، SQLite، H2، اور DuckDB کے لیے نیٹو ڈرائیورز شامل ہیں، نیز کسی بھی ڈرائیور jar والی چیز (Oracle، SQL Server، DB2، Snowflake، وغیرہ) کے لیے جنرک JDBC۔ وہی SQL گارڈ، پولنگ، پیرامیٹر بائنڈنگ، اور آؤٹ پٹ فارمیٹس بنیادی ڈیٹا بیس سے قطع نظر لاگو ہوتے ہیں۔
سیکیورٹی اور رسائی کنٹرول کی خصوصیات:
- SHA-256 ہیشڈ کلید اسٹوریج کے ساتھ API کلید آتھنٹیکیشن۔
- ڈیٹا بیس کنکشن پاس ورڈز QUERYAPIGATE_SECRET_KEY کے ذریعے آرام کے وقت انکرپٹڈ، صرف میموری میں ڈکرپٹ ہوتے ہیں جب کنکشن کھولا جاتا ہے۔
- اسکوپڈ API کیز: ایک کلید کو مخصوص کنکشنز اور/یا محفوظ استفسارات کی اجازت فہرست تک محدود کریں؛ رائٹ ایکسیس بند ہے جب تک واضح طور پر فعال نہ کیا جائے۔
- کلیکشنز: محفوظ استفسارات کو گروپ کریں اور ایک کلید کو پورا گروپ دیں؛ استفسار منتقل کرنے سے پیش نظارہ ہوتا ہے کہ کون سی کیز رسائی حاصل یا کھو رہی ہیں۔
- نامزد پرمیشن رولز: دوبارہ قابل استعمال ٹیمپلیٹس جو تخلیق کے وقت کلید پر کاپی ہوتے ہیں۔
- API کلید کی میعاد ختم، منسوخی، فی کلید ریٹ لمیٹنگ، اور IP اجازت فہرست (CIDR رینجز)۔
- SQL گارڈ جو بطور ڈیفالٹ صرف واحد SELECT/WITH/SHOW/DESCRIBE/EXPLAIN اسٹیٹمنٹس کی اجازت دیتا ہے، باؤنڈ :name پیرامیٹرز کے ساتھ۔
محفوظ استفسارات ورژن شدہ ہیں—اسی نام سے محفوظ کرنے پر اوور رائٹ کے بجائے نیا ورژن بنتا ہے، اور ?version=1 اب بھی پچھلا چلاتا ہے۔ پیرامیٹرز ٹائپ، ڈیفالٹ، لازمی/اختیاری، enum، عددی رینج، لمبائی، اور پیٹرن کا اعلان کر سکتے ہیں؛ غلط ان پٹ ڈیٹا بیس تک پہنچنے سے پہلے فیلڈ بہ فیلڈ 400 کے ساتھ مسترد کر دیا جاتا ہے۔
رسپانس فارمیٹس (JSON، NDJSON، XML، YAML، CSV، TSV، XLSX) فی ریکوئسٹ ?format= کے ذریعے منتخب کیے جا سکتے ہیں۔ پیجینیشن ?page اور ?page_size استعمال کرتی ہے X-Has-More ہیڈر کے ساتھ۔ مکمل ایکسپورٹس کے لیے، ?stream=true بفر کرنے کے بجائے ڈیٹا بیس کرسر سے پورا نتیجہ اسٹریم کرتا ہے—MySQL، PostgreSQL، اور ClickHouse پر 1,000,000 قطاروں کے نتائج اور فلیٹ سرور میموری کے ساتھ تصدیق شدہ۔ ایک CLI کمانڈ (queryapigate export) اسی اسٹریمنگ پاتھ کو cron/systemd/Kubernetes CronJob استعمال کے لیے لپیٹتی ہے۔
کوئری کیشنگ cache_ttl، Cache-Control، ETag، مشروط ریکوئسٹس، 304 Not Modified، اور X-Cache HIT/MISS ہیڈر کو سپورٹ کرتی ہے؛ رائٹس پر کبھی لاگو نہیں ہوتی۔ ریٹ لمیٹنگ سرور وائڈ IP کیڈ لمٹ کو اختیاری آزاد فی کلید لمٹ کے ساتھ جوڑتی ہے۔
آبزرویبلٹی میں ریکوئسٹ IDs کے ساتھ ٹیگ شدہ اسٹرکچرڈ JSON لاگز، فی استفسار ایگزیکیوشن ٹائمنگ، سلو کوئری وارننگز، اور /metrics پر Prometheus میٹرکس شامل ہیں جو ریکوئسٹ/کوئری کاؤنٹس، لیٹنسیز، کنکشن پول آکیوپینسی، اور ریٹ لمٹ مستردات کا احاطہ کرتے ہیں۔ تاریخی میٹرکس کے لیے ایک بنڈل Grafana ڈیش بورڈ دستیاب ہے۔
OpenAPI 3.0 /openapi.json پر جنریٹ ہوتا ہے (CI میں آفیشل ویلیڈیٹر کے خلاف تصدیق شدہ) جس میں ہر محفوظ استفسار ایک ٹائپ شدہ اینڈ پوائنٹ کے طور پر ہوتا ہے؛ /docs Swagger UI پیش کرتا ہے، ہر کلید کی رسائی کے مطابق فلٹر شدہ۔
/ui پر بلٹ اِن ایڈمن UI کنکشن مینجمنٹ، سنٹیکس ہائی لائٹنگ اور اسکیما براؤزنگ والا SQL ایڈیٹر، کوئری ایگزیکیوشن/پیش نظارہ، EXPLAIN، محفوظ استفسار اور ورژن مینجمنٹ، API کلید مینجمنٹ، انتظامی تبدیلیوں کا آڈٹ لاگ، فی استفسار ایگزیکیوشن ہسٹری، کولیسپبل JSON ٹریز کے ساتھ رسپانس معائنہ، عددی نتائج کے لیے فوری بار چارٹس، اور ایک کلک "copy as curl"/"copy as TSV" کا احاطہ کرتا ہے۔ ایک ریڈ اونلی Settings اسکرین ہر ماحولیاتی ویری ایبل اور اس کی مؤثر ویلیو دکھاتی ہے، جس میں راز صرف کنفیگرڈ ہونے یا نہ ہونے کی صورت میں رپورٹ ہوتے ہیں۔
انسٹالیشن pip کے ذریعے اختیاری ڈرائیور ایکسٹراز (mysql، postgres، clickhouse، h2، duckdb، all، encryption) کے ساتھ ہے۔ SQLite اور DuckDB کو کوئی بیرونی رن ٹائم درکار نہیں؛ H2 اور جنرک JDBC کو Java رن ٹائم درکار ہے۔ Docker بھی سپورٹڈ ہے۔ کمانڈ `queryapigate examples load` چار کام شدہ مثالوں کے منظرنامے (رپورٹنگ API، ڈیش بورڈ ڈیٹا، اسٹریمنگ ایکسپورٹ، پارٹنر انٹیگریشن) بطور کلیکشنز، استفسارات، رولز، اور استعمال کے لیے تیار API کیز انسٹال کرتی ہے۔
ٹیسٹنگ میں یونٹ ٹیسٹس، CI میں حقیقی MySQL، PostgreSQL، ClickHouse، اور H2 سرورز کے خلاف انٹیگریشن ٹیسٹس، DuckDB انٹیگریشن ٹیسٹس، Hypothesis کے ساتھ SQL گارڈ فز ٹیسٹنگ، mypy اسٹیٹک ٹائپ چیکنگ، ruff لنٹنگ، اور ہر پش پر CI شامل ہیں۔ پروجیکٹ FSL-1.1-MIT لائسنس یافتہ ہے اور Python 3.9+ درکار ہے۔
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.