Go migration postgresql

Go migration using postgresql مایگریشن یعنی دولوپر از اول تمام جزییات دیتابیس رو بصورت ورژن تعریف بکنهیعنی هر تغییر جدید در یک ورژن جدید نوشته میشه و در صو.رتی که هر تغییر رو بخوایم برداریم به ورژن قبلی برمیگردیمکار با او به این صورته که و قتی درکتوری اولیه رو ساختیم و ماژولارش کردیم در اولین حرکت با وارد کردن این کمند در cli به برنامه میگیم که یک پوشه بسازه و نسخه های مختلف دیتابیس رو در اون بگنجونهmigrate create -ext sql -dir <the direction/> -seq <the file name >بخش the direction مسیری هست که برای نگهداشتن نسخه ها میسازیم و the file نامی هست که به هر نسخه اختصاص میدیم و بهتره شامل نشانی از تغییرات اعمال شده باشهعبارت seq- مرتب سازی نسخه ها رو برعهده داره(بهتره بدونیم که migration و پکیجش رو از پیش باید نصب کرده باشیم)ورژن اولبا این کار در مسیر db/migration در هر مرحله که نسخه ی جدید رو وارد میکنیم دو فایل با پسوند down.sql & up.sql ساخته میشه و معلومه که یکی برای migrate به نسخه ی جدیده و یکی دیگه برای backward شدن به نسخه ی قدیمی ترکار با او به این شکله که در فایل up ما کوئری های مربوط به ریلیز جدید رو وارد میکنیم و در فایل down کوئری برگشت به حالت قبلی رو / مثلا چون در مرحله ای اولیم up ما شامل ساخت تیبل و down شامل دراپ اون میشه :اولین ورژناولین ورژنعبارتهای BEGIN; & COMMIT; در ابتدا و انتها یک بلاکایز کردنه چیز خاصی نیست ! وقتی دستو رما فقط یه دونه ست حتی لازم به نوشتن این عبارات هم نیستاون دش های بالا رو اگه خواستین دقیقا همین کدها رو وارد کنید به آندرلاین تغییر بدین pr-name …> pr_nameاما دستوری لازمه که بوسیله ی اون این کدهای جدید شناسایی جنریت دیباگ و ست بشن .. یعنی یه دستوری به برنامه بدیم که این ریلیز جدید رو به عنوان دیتابیس نو مورد استفاده قرار بده :migrate -path <the migration path> -database &quotpostgresql://username:password@localhost:5432/database_name?sslmode=disable&quot -verbose upکل دستور مورد خاصی نداره جز اینکه در بخش username:password شما یوزرنیم و پسورد کانتینری که ساختید رو وارد میکنید برای دسترسی به اون/ و بخش sslmode که باید disable باشه و up در انتهای دستور که با down دو کلید واژه برای ریلیز جدید یا بک وارد هستن و ما اون ها رو جایگزین میکنیم طبق حالت هایی که نیاز داریماما قبل از اینکه واردش کنیم یه سری مراحل داریم :گیچه ل داره ! :) این کلمه رو فراموش کن شوخی بوداما وارد cli میشیم و با دستور sudo docker container exec -it <the container name >bashالحمد لله اسم container رو که میدونیم ! میذاریم جای خودش و وارد میشیم ..containerبا دستور su postgres ادمینستریتور میشیم :با دستور : psql -U postgres -W به محتوای container دسترسی خواهیم داشت :با دستور create database <database name > یک دیتا بیس بسازید :حالا اسم دیتابیس رو در محلی که گفتم اون بالا (کجا گفته بودم ? توی دستور migrate up) بنویسید و دستور رو اجرا کنید تا درون این دیتا بیس برای شما تیبل رو بسازهمن اسم دیتابیسم رو گذاشتم migrationحالا با دستور \c migration (بک اسلش سی و اسم دیتابیس) میریم تو دیتا بیسی که ساختیم و صدا میزنیم تیبلی رو که ورژن یک دیتابیسمونه :حالا یه ورژن جدید به دیتابیس میدیم و در اون بهش یه تیبل دیگه اضافه میکنیم :من این تیبل رو اسمش رو میگذارم users :برای اینکار کل مراحل ورژنینگ قبل رو تکرار میکنیم :قاعدتا سربسر گذاشتن این قابلیت و تکنولوژی مایگریشن نیاز وقت انرژی و صبره و شما باید چندین ورژن بسازید مایگریت کنید برگردید تا به طور کامل جا بیافته لازمه یه مورد رو یا آوری کنم ساختن اسکیما رو اینجا دستی انجام دادیم این درحالیه که شما باید از طریق مایگریشن اینکارو بکنید برای اینکار در کوءریتون این دستور رو قبل از create table اضافه کنید :CREATE SCHEMA <the schema name>;و در دستور جنریت کردن migration که بالا تر در موردش حرف زدم جای database name رو خالی بذارید یعنی اینجوری :migrate -path <the migration path>-database &quotpostgresql://username:password@localhost:5432/database_name?sslmode=disable&quot -verbose up migrate -path <the migration path> -database &quotpostgresql://username:password@localhost:5432/?sslmode=disable&quot -verbose upاینطوری کل مراحل ساخت دستی دیتا بیس و اسکیما رو skip کردین به داکیومنتیشن postgresql برید و در مورد آلتر کردن یاد بگیرید و به دوستانی هم که اینم مطلب رو میبینن و خیلی کارشون درسته عرض میکنم بابا take it easy من میخوام همه چی انقد که به نظر میاد پیچیده نباشه