इस प्रोजेक्ट के बारे में

Goose एक डेटाबेस माइग्रेशन टूल है जो कमांड-लाइन इंटरफ़ेस और Go लाइब्रेरी दोनों के रूप में वितरित किया जाता है। यह वृद्धिशील माइग्रेशन फ़ाइलों के माध्यम से डेटाबेस स्कीमा के विकास को प्रबंधित करता है, जो या तो SQL या Go फ़ंक्शन्स के रूप में लिखी जाती हैं। समर्थित डेटाबेस में Postgres, MySQL, MariaDB, Spanner, SQLite, YDB, ClickHouse, MSSQL, Vertica, Redshift, TiDB, StarRocks, Turso और Azure SQL शामिल हैं। बिल्ड टैग्स के माध्यम से अनावश्यक ड्राइवर्स को हटाकर बाइनरी को छोटा किया जा सकता है। इंस्टॉलेशन `go install`, macOS पर Homebrew, या कस्टम बिल्ड के माध्यम से उपलब्ध है। कॉन्फ़िगरेशन को कमांड आर्गुमेंट्स के रूप में या GOOSE_DRIVER, GOOSE_DBSTRING, GOOSE_MIGRATION_DIR और GOOSE_TABLE जैसे एनवायरनमेंट वेरिएबल्स के माध्यम से पास किया जा सकता है, जिसमें `.env` फ़ाइलों से लोड करना भी शामिल है। CLI माइग्रेशन बनाने (`create`), उन्हें लागू करने (`up`, `up-by-one`, `up-to`), रोलबैक करने (`down`, `down-to`, `reset`, `redo`), स्थिति का निरीक्षण करने (`status`, `version`) और फ़ाइलों को मान्य करने (`validate`, `fix`) के लिए कमांड प्रदान करता है। एक `-allow-missing` फ़्लैग आउट-ऑफ़-ऑर्डर माइग्रेशन को सक्षम करता है, और टीम वर्कफ़्लो के लिए टाइमस्टैम्प को अनुक्रमिक नंबरिंग के साथ जोड़ने वाला हाइब्रिड वर्ज़निंग दृष्टिकोण अनुशंसित है। SQL माइग्रेशन `-- +goose Up` और `-- +goose Down` जैसे एनोटेशन का उपयोग करते हैं, जटिल स्टेटमेंट्स के लिए वैकल्पिक `NO TRANSACTION` और `StatementBegin`/`StatementEnd` मार्कर के साथ। एनवायरनमेंट वेरिएबल प्रतिस्थापन को प्रति फ़ाइल `ENVSUB ON`/`ENVSUB OFF` के साथ सक्षम किया जा सकता है। Go माइग्रेशन `goose.AddMigration` के माध्यम से रजिस्टर किए जाते हैं और Go के embed पैकेज का उपयोग करके बाइनरी में एम्बेड किए जा सकते हैं। डेटा सीडिंग और एम्बेडेड माइग्रेशन का भी समर्थन किया जाता है।