প্রকল্প সম্পর্কে

QueryAPIGate একটি সেলফ-হোস্টেড, একক Flask সেবা যা আপনার ডেটাবেসে SQL চালায় এবং ফলাফল JSON, NDJSON, XML, YAML, CSV, TSV বা Excel হিসেবে ফেরত দেয়। একটি কোয়েরি একবার সংরক্ষণ করলেই তা সংস্করণযুক্ত REST এন্ডপয়েন্ট হয়ে যায়—টাইপড, ইনজেকশন-নিরাপদ প্যারামিটার ও রান হিস্ট্রিসহ; কন্ট্রোলার, রিপোজিটরি লেয়ার, পেজিনেশন, অথ বা সিরিয়ালাইজেশন বয়লারপ্লেট লিখতে হয় না। মাল্টি-ডেটাবেস সাপোর্টে MySQL, PostgreSQL, ClickHouse, SQLite, H2 ও DuckDB-এর জন্য নেটিভ ড্রাইভার রয়েছে, সাথে ড্রাইভার জার থাকা যেকোনো কিছুর (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-এ ১,০০০,০০০ সারির ফলাফলে ফ্ল্যাট সার্ভার মেমোরিসহ যাচাই করা হয়েছে। একটি CLI কমান্ড (queryapigate export) একই স্ট্রিমিং পথ মোড়ে cron/systemd/Kubernetes CronJob ব্যবহারের জন্য। কোয়েরি ক্যাশিং cache_ttl, Cache-Control, ETag, কন্ডিশনাল রিকোয়েস্ট, 304 Not Modified ও X-Cache HIT/MISS হেডার সমর্থন করে; রাইটে কখনো প্রয়োগ হয় না। রেট লিমিটিং সার্ভার-ওয়াইড IP-কীড লিমিটের সাথে ঐচ্ছিক স্বতন্ত্র প্রতি-কী লিমিট মেলায়। অবজার্ভেবিলিটিতে রিকোয়েস্ট আইডি ট্যাগযুক্ত স্ট্রাকচার্ড 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` কমান্ড চারটি ওয়ার্কড উদাহরণ দৃশ্যপট (reporting API, dashboard data, streaming export, partner integration) কালেকশন, কোয়েরি, রোল ও রেডি-টু-ইউজ API কী হিসেবে ইনস্টল করে। টেস্টিংয়ে ইউনিট টেস্ট, CI-তে প্রকৃত MySQL, PostgreSQL, ClickHouse ও H2 সার্ভারের বিরুদ্ধে ইন্টিগ্রেশন টেস্ট, DuckDB ইন্টিগ্রেশন টেস্ট, Hypothesis দিয়ে SQL-গার্ড ফাজ টেস্টিং, mypy স্ট্যাটিক টাইপ চেকিং, ruff লিন্টিং এবং প্রতিটি পুশে CI অন্তর্ভুক্ত। প্রকল্পটি FSL-1.1-MIT লাইসেন্সের অধীন এবং Python 3.9+ প্রয়োজন।