github.com/mysteriumnetwork/node@v0.0.0-20240516044423-365054f76801/core/storage/boltdb/migrations/registration_state.go (about)

     1  /*
     2   * Copyright (C) 2021 The "MysteriumNetwork/node" Authors.
     3   *
     4   * This program is free software: you can redistribute it and/or modify
     5   * it under the terms of the GNU General Public License as published by
     6   * the Free Software Foundation, either version 3 of the License, or
     7   * (at your option) any later version.
     8   *
     9   * This program is distributed in the hope that it will be useful,
    10   * but WITHOUT ANY WARRANTY; without even the implied warranty of
    11   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    12   * GNU General Public License for more details.
    13   *
    14   * You should have received a copy of the GNU General Public License
    15   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
    16   */
    17  
    18  package migrations
    19  
    20  import (
    21  	"time"
    22  
    23  	"github.com/asdine/storm/v3"
    24  	"github.com/mysteriumnetwork/node/identity"
    25  	"github.com/mysteriumnetwork/node/identity/registry"
    26  )
    27  
    28  type storedRegistrationStatus struct {
    29  	ID                  string `storm:"id"`
    30  	RegistrationStatus  registry.RegistrationStatus
    31  	Identity            identity.Identity
    32  	ChainID             int64
    33  	RegistrationRequest registry.IdentityRegistrationRequest
    34  	UpdatedAt           time.Time
    35  }
    36  
    37  const registrationStatusBucket = "registry_statuses"
    38  
    39  // MigrateRegistrationState run a migration which resets all registration
    40  // states to "Unregistered".
    41  func MigrateRegistrationState(db *storm.DB) error {
    42  	tx, err := db.Begin(true)
    43  	if err != nil {
    44  		return err
    45  	}
    46  	res := []storedRegistrationStatus{}
    47  	err = tx.From(registrationStatusBucket).All(&res)
    48  	if err != nil {
    49  		return err
    50  	}
    51  
    52  	for i := range res {
    53  		res[i].RegistrationStatus = registry.Unregistered
    54  		err := tx.From(registrationStatusBucket).Save(&res[i])
    55  		if err != nil {
    56  			return err
    57  		}
    58  	}
    59  
    60  	return tx.Commit()
    61  }