Kontentga o‘tish

v1.13 dan v1.14 ga yangilash

Qiziqarli Yangi Imkoniyatlar 🎉

Takomillashtirishlar 🚀

Muhim Oʻzgarishlar 🛠

v1.14.1

v1.14.2

v1.14.3

Tegishli paketlarni yangilash: goravel/gin: v1.2.2, goravel/fiber: v1.2.2

v1.14.4

Tegishli paketlarni yangilash: goravel/gin: v1.2.3

v1.14.5

Tegishli paketlarni yangilash: goravel/gin: v1.2.4, goravel/fiber: v1.2.3

v1.14.7

Tegishli paketlarni yangilash: goravel/gin: v1.2.5, goravel/fiber: v1.2.4

v1.14.8

v1.14.9

Yangilash Qoʻllanmasi

Goravel v1.14 Golang 1.21 asosida ishlab chiqilgan va sinovdan oʻtkazilgan boʻlib, odatda boshqa pastroq Golang versiyalari bilan mos keladi. Iltimos, ushbu boʻlimdagi mazmunga muvofiq freymvorkni bosqichma-bosqich yangilang.

Taxminiy Yangilash Vaqti: 10 Daqiqa

1. Bogʻliqliklarni Yangilash

go get -u github.com/goravel/framework@v1.14.7

// Agar gin ishlatilsa
go get -u github.com/goravel/gin@v1.2.5

// Agar fiber ishlatilsa
go get -u github.com/goravel/fiber@v1.2.4

// Agar redis ishlatilsa
go get -u github.com/goravel/redis@v1.2.1

// Agar s3 ishlatilsa
go get -u github.com/goravel/s3@v1.2.0

// Agar oss ishlatilsa
go get -u github.com/goravel/oss@v1.2.0

// Agar cos ishlatilsa
go get -u github.com/goravel/cos@v1.2.0

// Agar minio ishlatilsa
go get -u github.com/goravel/minio@v1.2.0

// Agar cloudinary ishlatilsa
go get -u github.com/goravel/cloudinary@v1.2.0

go mod tidy

2. Konfiguratsiya Elementlarini Qoʻshish

  1. config/app.go ga lokallashtirish moduli konfiguratsiya elementlarini qoʻshing:
go
"locale": "en",
"fallback_locale": "en",
"providers": []foundation.ServiceProvider{
  ...
  &session.ServiceProvider{},
  &translation.ServiceProvider{},
  ...
}
  1. Agar session funksiyasidan foydalanmoqchi boʻlsangiz, config/session.go faylini qoʻshing;

3) Agar Validation moduli ishlatilsa

Maʼlumotlar tekshiruvi muvaffaqiyatsiz boʻlsa ham, bogʻlangan qiymatni oʻqishga urinayotganingizni tasdiqlang. Agar shunday boʻlsa, mantiqni optimallashtirishingiz kerak, chunki yangilashdan keyin qiymat boʻsh boʻladi. Qarang: Tekshiruv muvaffaqiyatsiz boʻlsa, Validation maʼlumotlarni bogʻlamaydi.

4. Agar Testing moduli ishlatilsa

Clear, Image metodlaridan foydalanayotganingizni tekshiring, agar shunday boʻlsa, mos ravishda oʻzgartirishingiz kerak: Testing moduli uchun yangi metodlar qoʻshish va metodlarni oʻzgartirish

5. agar Mail moduli ishlatilsa

Queue metodidan foydalanayotganingizni tekshiring, agar shunday boʻlsa, mos ravishda oʻzgartirishingiz kerak: Mail modulining Queue metodini optimallashtirish

6. Agar Auth moduli ishlatilsa

Mos ravishda oʻzgartirishingiz kerak: Auth moduli ctx ning sozlash metodini optimallashtirish

7. Agar mock fasadlar ishlatilsa

Mos ravishda oʻzgartirishingiz kerak: Mock fasadlar usulini optimallashtirish

8. Agar framework Orm modeli ishlatilsa va maʼlumotlar toʻgʻridan-toʻgʻri endpoint orqali qaytarilsa

Mos ravishda oʻzgartirishingiz kerak: Framework Orm modeli json tegnini qoʻshadi

Imkoniyatlar Tavsifi

Mahalliylashtirish

Versiya: v1.14.0

Hujjatni ko‘rish

O‘rnatuvchi

Versiya: v1.14.0

O‘rnatuvchi sizga yangi Goravel loyihasini oson yuklab olish va ishga tushirish imkonini beradi.

Hujjatni ko‘rish

Versiya: v1.14.0

So‘rov hujjatini ko‘rish

Javob hujjatini ko‘rish

Seans

Versiya: v1.14.0

Hujjatni ko‘rish

Gin va Fiber haydovchilarida body_limit va header_limit ni o‘rnatish uchun qo‘llab-quvvatlash

Versiya: v1.14.0

HTTP haydovchilari body_limit ni o‘rnatish orqali tana hajmini cheklashni qo‘llab-quvvatlaydi, qarang: goravel/gin va goravel/fiber.

Log yangi usullarni qo‘shadi

Versiya: v1.14.0

UsulTavsif
StackBir vaqtning o‘zida bir nechta kanallardan foydalanish
ChannelAniq bir kanalni belgilash
WithTraceIzni chop etish

Hujjatni ko‘rish

Orm yangi usullarni qo‘shadi

Versiya: v1.14.0

WhereIn, OrWhereIn, OrWhereNotIn, WhereNotIn, WhereBetween, WhereNotBetween, WhereNull, OrWhereNull, OrderByDesc, OrderBy, InRandomOrder, Exists usullarini qo‘shish.

Console yangi usullarni qo‘shadi

Versiya: v1.14.0

Hujjatni ko‘rish

Response yangi usullarni qo‘shadi

Versiya: v1.14.0

Hujjatni ko‘rish

Build buyrug‘ini qo‘shish

Versiya: v1.14.0

Goravel loyihasi quyidagi buyruq orqali kompilyatsiya qilinishi mumkin: go run . artisan build.

Hujjatni ko‘rish

Yordamchi usullarni qo‘shish

Versiya: v1.14.0

Redis haydovchisi TLS ni qo‘llab-quvvatlaydi

Versiya: v1.14.0

Hujjatni ko‘rish

Tekshiruv muvaffaqiyatsiz bo‘lsa, ma’lumotlarni bog‘lamaydi

Versiya: v1.14.0

Ilgari quyidagi usullarni chaqirganda, xatolik qaytarilgan bo‘lsa ham, userRequest qiymatni bog‘lab qo‘ygan edi. Yangilashdan so‘ng, u endi bog‘lamaydi.

go
var userRequest requests.UserRequest
errors, err := ctx.Request().ValidateRequest(&userRequest)

// yoki
validator, err := validation.Make(***)
err = validator.Bind(&userRequest)

Testing moduli uchun yangi usullarni qo‘shish va usullarni o‘zgartirish

Versiya: v1.14.0

  1. Fresh usulini qo‘shish;
  2. Clear usulini Stop usuliga o‘zgartirish;
  3. Image usuli ExposedPorts o‘zgaruvchisini qo‘shadi va Timeout o‘zgaruvchisini olib tashlaydi;
go
database, err := facades.Testing().Docker().Database()
database.Image(testingcontract.Image{
  Repository: "mysql",
  Tag:        "5.7",
  Env: []string{
    "MYSQL_ROOT_PASSWORD=123123",
    "MYSQL_DATABASE=goravel",
  },
  -- Timeout: 1000,
  ++ ExposedPorts: []string{"3306"},
})

Mail modulining Queue usulini optimallashtirish

Versiya: v1.14.0

Queue usulining kirish parametri queue *mail.Queue dan queue ...mail.Queue ga o‘zgartirildi.

diff
-- facades.Mail().Queue(nil)
++ facades.Mail().Queue()

-- facades.Mail().Queue(&mail.Queue{})
++ facades.Mail().Queue(mail.Queue{})

Auth moduli ctx ning sozlash usulini optimallashtirish

Versiya: v1.14.0

Ilgari Parse, User, Login, LoginUsingID, Refresh, Logout usullarini chaqirganda, ctx ni uzatish kerak edi. Yangilashdan so‘ng, ctx ni uzatish shart emas, uni to‘g‘ridan-to‘g‘ri facades.Auth(ctx) da o‘rnatishingiz mumkin.

diff
-- facades.Auth().Parse(ctx, token)
++ facades.Auth(ctx).Parse(token)

-- facades.Auth().User(ctx, &user)
++ facades.Auth(ctx).User(&user)

-- facades.Auth().Login(ctx, &user)
++ facades.Auth(ctx).Login(&user)

-- facades.Auth().LoginUsingID(ctx, id)
++ facades.Auth(ctx).LoginUsingID(id)

-- facades.Auth().Refresh(ctx)
++ facades.Auth(ctx).Refresh()

-- facades.Auth().Logout(ctx)
++ facades.Auth(ctx).Logout()

Mock facades usulini optimallashtirish

Versiya: v1.14.0

diff
import github.com/goravel/framework/testing/mock

++ mockFactory := mock.Factory()

-- app := mock.App()
++ app := mockFactory.App()

-- artisan := mock.Artisan()
++ artisan := mockFactory.Artisan()

-- auth := mock.Auth()
++ auth := mockFactory.Auth()

-- artisan := mock.Artisan()
++ artisan := mockFactory.Artisan()

-- cache, driver, lock := mock.Cache()
++ cache := mockFactory.Cache()
++ driver := mockFactory.CacheDriver()
++ lock := mockFactory.CacheLock()

-- config := mock.Config()
++ config := mockFactory.Config()

-- crypt := mock.Crypt()
++ crypt := mockFactory.Crypt()

-- event, task := mock.Event()
++ event := mockFactory.Event()
++ event := mockFactory.EventTask()

-- gate := mock.Gate()
++ gate := mockFactory.Gate()

-- grpc := mock.Grpc()
++ grpc := mockFactory.Grpc()

-- hash := mock.Hash()
++ hash := mockFactory.Hash()

-- mock.Log()
++ mockFactory.Log()

-- mail := mock.Mail()
++ mail := mockFactory.Mail()

-- orm, query, transaction, association := mock.Orm()
++ orm := mockFactory.Orm()
++ query := mockFactory.OrmQuery()
++ transaction := mockFactory.OrmTransaction()
++ association := mockFactory.OrmAssociation()

-- queue, task := mock.Queue()
++ queue := mockFactory.Queue()
++ task := mockFactory.QueueTask()

-- rateLimiter := mock.RateLimiter()
++ rateLimiter := mockFactory.RateLimiter()

-- storage, driver, file := mock.Storage()
++ storage := mockFactory.Storage()
++ driver := mockFactory.StorageDriver()
++ file := mockFactory.StorageFile()

-- seeder := mock.Seeder()
++ seeder := mockFactory.Seeder()

-- validation, validator, errors := mock.Validation()
++ validation := mockFactory.Validation()
++ validator := mockFactory.ValidationValidator()
++ errors := mockFactory.ValidationErrors()

-- view := mock.View()
++ view := mockFactory.View()

Framework Orm modeli json tegini qo‘shadi

Versiya: v1.14.0

Agar siz freymvorkning Orm modelidan foydalanayotgan bo‘lsangiz va ma’lumotlarni to‘g‘ridan-to‘g‘ri endpoint orqali qaytarmoqchi bo‘lsangiz, eski modelga ko‘ra yangi model yaratib, eskisini almashtirishingiz yoki frontend json tegi bo‘yicha maydon nomini o‘zgartirishi kerak.

go
type Model struct {
	-- ID uint `gorm:"primaryKey"`
	++ ID uint `gorm:"primaryKey" json:"id"`
	Timestamps
}

type SoftDeletes struct {
	-- DeletedAt gorm.DeletedAt `gorm:"column:deleted_at"`
	++ DeletedAt gorm.DeletedAt `gorm:"column:deleted_at" json:"deleted_at"`
}

type Timestamps struct {
	-- CreatedAt carbon.DateTime `gorm:"autoCreateTime;column:created_at"`
	-- UpdatedAt carbon.DateTime `gorm:"autoUpdateTime;column:updated_at"`
	++ CreatedAt carbon.DateTime `gorm:"autoCreateTime;column:created_at" json:"created_at"`
	++ UpdatedAt carbon.DateTime `gorm:"autoUpdateTime;column:updated_at" json:"updated_at"`
}

Gin haydovchisida sessiya muvaffaqiyatli o‘rnatilmagan muammosini tuzatish

goravel/framework: v1.14.1

Lokalizatsiya modulida til faylini o‘qib bo‘lmaydigan muammosini tuzatish

goravel/framework: v1.14.1

Tasdiqlash (Validation) tasvir va fayl tekshiruvi muvaffaqiyatsiz tugagan muammosini tuzatish

goravel/framework: v1.14.2

goravel/gin: v1.2.2

goravel/fiber: v1.2.2

Muammo #450

goravel/gin: v1.2.2

Tasdiqlash (Validation) kesim (slice) bog‘lay olmaydigan muammosini tuzatish

goravel/framework: v1.14.3

go
type User struct {
	Tags   []string `form:"tags" json:"tags"`
}

Tasdiqlash (Validation) carbon bog‘lashni qo‘llab-quvvatlaydi

goravel/framework: v1.14.3

go
// Carbon maydonini aniqlash
type User struct {
	Date   carbon.Carbon `form:"date" json:"date"`
}
var user requests.User

// ValidateRequest yordamida ma’lumotlarni bog‘lash
errors, err := ctx.Request().ValidateRequest(&user)

// yoki Validate yordamida ma’lumotlarni bog‘lash
validator, err := ctx.Request().Validate(map[string]string{
  "date": "required|date",
})
err := validator.Bind(&user)

// sana vaqtni olish
user.Date.ToDateTimeString()

Sessiya konkurent muammosini tuzatish

goravel/framework: v1.14.4

Sessiya juda yuqori konkurentlikda bo‘lganda, sessiyani o‘qish va yozishda ziddiyat yuzaga kelishi mumkin

Gin Sessiya same_site parametrini noto‘g‘ri o‘rnatgan muammosini tuzatish

goravel/gin: v1.2.3

Muammo #455

Route uchun Shutdown metodini qo‘shish

goravel/framework: v1.14.5

goravel/gin: v1.2.4

goravel/fiber: v1.2.3

Hujjatni ko‘rish

HTTP ning ctx.WithValue metodini optimallashtirish

goravel/framework: v1.14.7

goravel/gin: v1.2.5

goravel/fiber: v1.2.4

ctx.WithValue metodining kaliti faqat string turini qo‘llab-quvvatlashdan har qanday (any) turini qo‘llab-quvvatlashga o‘zgartirildi

go
ctx.WithValue("Hello", "world")
ctx.WithValue(1, "hi")

var key struct{}
ctx.WithValue(key, "hola")

Eshituvchini ro‘yxatdan o‘tkazish ziddiyati muammosini tuzatish

goravel/framework: v1.14.8

Bir nechta hodisalar bir xil eshituvchidan foydalansa, ro‘yxatdan o‘tkazishda eshituvchi ziddiyati haqida ogohlantirish chiqariladi.

Muammo #523

Maxsus Log haydovchisi konsolida takroriy chop etish muammosini tuzatish

goravel/framework: v1.14.9

Muammo #531

HTTP JSON So‘rovi ko‘p darajali tuzilishni o‘z ichiga olganda ma’lumotlarni bog‘lash xatosi muammosini tuzatish

goravel/framework: v1.14.9

Muammo #533

MIT litsenziyasi ostida chiqarilgan