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 }