gitee.com/zhaochuninhefei/fabric-ca-gm@v0.0.2/lib/server/db/migrator.go (about)

     1  /*
     2  Copyright IBM Corp. All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package db
     8  
     9  import (
    10  	"gitee.com/zhaochuninhefei/fabric-ca-gm/lib/server/db/util"
    11  	log "gitee.com/zhaochuninhefei/zcgolog/zclog"
    12  )
    13  
    14  //go:generate counterfeiter -o mocks/migrator.go -fake-name Migrator . Migrator
    15  
    16  // Migrator is the interface that defines a migrator
    17  type Migrator interface {
    18  	MigrateUsersTable() error
    19  	MigrateCertificatesTable() error
    20  	MigrateAffiliationsTable() error
    21  	MigrateCredentialsTable() error
    22  	MigrateRAInfoTable() error
    23  	MigrateNoncesTable() error
    24  	Rollback() error
    25  	Commit() error
    26  }
    27  
    28  // Migrate updates the database tables to use the latest schema and does
    29  // data migration if needed
    30  func Migrate(migrator Migrator, currentLevels, srvLevels *util.Levels) error {
    31  	if currentLevels.Identity < srvLevels.Identity {
    32  		log.Debug("Migrating users table...")
    33  		err := migrator.MigrateUsersTable()
    34  		if err != nil {
    35  			log.Errorf("Error encountered while migrating users table, rolling back changes: %s", err)
    36  			return migrator.Rollback()
    37  		}
    38  	}
    39  
    40  	if currentLevels.Affiliation < srvLevels.Affiliation {
    41  		log.Debug("Migrating affiliation table...")
    42  		err := migrator.MigrateAffiliationsTable()
    43  		if err != nil {
    44  			log.Errorf("Error encountered while migrating affiliations table, rolling back changes: %s", err)
    45  			return migrator.Rollback()
    46  		}
    47  	}
    48  
    49  	if currentLevels.Certificate < srvLevels.Certificate {
    50  		log.Debug("Upgrade certificates table...")
    51  		err := migrator.MigrateCertificatesTable()
    52  		if err != nil {
    53  			log.Errorf("Error encountered while migrating certificates table, rolling back changes: %s", err)
    54  			return migrator.Rollback()
    55  		}
    56  	}
    57  
    58  	if currentLevels.Credential < srvLevels.Credential {
    59  		log.Debug("Migrating credentials table...")
    60  		err := migrator.MigrateCredentialsTable()
    61  		if err != nil {
    62  			log.Errorf("Error encountered while migrating credentials table, rolling back changes: %s", err)
    63  			return migrator.Rollback()
    64  		}
    65  	}
    66  
    67  	if currentLevels.Nonce < srvLevels.Nonce {
    68  		log.Debug("Migrating nonces table...")
    69  		err := migrator.MigrateNoncesTable()
    70  		if err != nil {
    71  			log.Errorf("Error encountered while migrating nonces table, rolling back changes: %s", err)
    72  			return migrator.Rollback()
    73  		}
    74  	}
    75  
    76  	if currentLevels.RAInfo < srvLevels.RAInfo {
    77  		log.Debug("Migrating revocation_authority_info table...")
    78  		err := migrator.MigrateRAInfoTable()
    79  		if err != nil {
    80  			log.Errorf("Error encountered while migrating revocation_authority_info table, rolling back changes: %s", err)
    81  			return migrator.Rollback()
    82  		}
    83  	}
    84  
    85  	return migrator.Commit()
    86  }