* User muting
* Address review feedback
* Rename uniqueness constraint on user_mutes to match convention
* Remove unused account_id from where clause
* Add UserMute to NewTestDB
* Update test/envparsing.sh with new and fixed cache stuff
* Address tobi's review comments
* Make compiledUserMuteListEntry.expired consistent with UserMute.Expired
* Make sure mute_expires_at is serialized as an explicit null for indefinite mutes
---------
Co-authored-by: tobi <tobi.smethurst@protonmail.com>
As a template, take one of the existing migration files and modify it, or use the below code snippet:
// GoToSocial
// Copyright (C) GoToSocial Authors admin@gotosocial.org
// SPDX-License-Identifier: AGPL-3.0-or-later
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
packagemigrationsimport("context""github.com/uptrace/bun")funcinit(){up:=func(ctxcontext.Context,db*bun.DB)error{returndb.RunInTx(ctx,nil,func(ctxcontext.Context,txbun.Tx)error{// your logic here
returnnil})}down:=func(ctxcontext.Context,db*bun.DB)error{returndb.RunInTx(ctx,nil,func(ctxcontext.Context,txbun.Tx)error{// your logic here
returnnil})}iferr:=Migrations.Register(up,down);err!=nil{panic(err)}}
File format
Bun requires a very specific format: 14 digits, then letters or underscores.
You can use the following bash command on your branch to generate a suitable migration filename.
echo"$(date --utc +%Y%m%d%H%M%S | head -c 14)_$(git rev-parse --abbrev-ref HEAD).go"
Rules of thumb
DON'T DROP TABLES!!!!!!!!
Don't make something NOT NULL if it's likely to already contain null fields.