github.com/jxgolibs/go-oauth2-server@v1.0.1/models/migrations.go (about)

     1  package models
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/RichardKnop/go-oauth2-server/util/migrations"
     7  	"github.com/jinzhu/gorm"
     8  )
     9  
    10  var (
    11  	list = []migrations.MigrationStage{
    12  		{
    13  			Name:     "initial",
    14  			Function: migrate0001,
    15  		},
    16  	}
    17  )
    18  
    19  // MigrateAll executes all migrations
    20  func MigrateAll(db *gorm.DB) error {
    21  	return migrations.Migrate(db, list)
    22  }
    23  
    24  func migrate0001(db *gorm.DB, name string) error {
    25  	//-------------
    26  	// OAUTH models
    27  	//-------------
    28  
    29  	// Create tables
    30  	if err := db.CreateTable(new(OauthClient)).Error; err != nil {
    31  		return fmt.Errorf("Error creating oauth_clients table: %s", err)
    32  	}
    33  	if err := db.CreateTable(new(OauthScope)).Error; err != nil {
    34  		return fmt.Errorf("Error creating oauth_scopes table: %s", err)
    35  	}
    36  	if err := db.CreateTable(new(OauthRole)).Error; err != nil {
    37  		return fmt.Errorf("Error creating oauth_roles table: %s", err)
    38  	}
    39  	if err := db.CreateTable(new(OauthUser)).Error; err != nil {
    40  		return fmt.Errorf("Error creating oauth_users table: %s", err)
    41  	}
    42  	if err := db.CreateTable(new(OauthRefreshToken)).Error; err != nil {
    43  		return fmt.Errorf("Error creating oauth_refresh_tokens table: %s", err)
    44  	}
    45  	if err := db.CreateTable(new(OauthAccessToken)).Error; err != nil {
    46  		return fmt.Errorf("Error creating oauth_access_tokens table: %s", err)
    47  	}
    48  	if err := db.CreateTable(new(OauthAuthorizationCode)).Error; err != nil {
    49  		return fmt.Errorf("Error creating oauth_authorization_codes table: %s", err)
    50  	}
    51  	err := db.Model(new(OauthUser)).AddForeignKey(
    52  		"role_id", "oauth_roles(id)",
    53  		"RESTRICT", "RESTRICT",
    54  	).Error
    55  	if err != nil {
    56  		return fmt.Errorf("Error creating foreign key on "+
    57  			"oauth_users.role_id for oauth_roles(id): %s", err)
    58  	}
    59  	err = db.Model(new(OauthRefreshToken)).AddForeignKey(
    60  		"client_id", "oauth_clients(id)",
    61  		"RESTRICT", "RESTRICT",
    62  	).Error
    63  	if err != nil {
    64  		return fmt.Errorf("Error creating foreign key on "+
    65  			"oauth_refresh_tokens.client_id for oauth_clients(id): %s", err)
    66  	}
    67  	err = db.Model(new(OauthRefreshToken)).AddForeignKey(
    68  		"user_id", "oauth_users(id)",
    69  		"RESTRICT", "RESTRICT",
    70  	).Error
    71  	if err != nil {
    72  		return fmt.Errorf("Error creating foreign key on "+
    73  			"oauth_refresh_tokens.user_id for oauth_users(id): %s", err)
    74  	}
    75  	err = db.Model(new(OauthAccessToken)).AddForeignKey(
    76  		"client_id", "oauth_clients(id)",
    77  		"RESTRICT", "RESTRICT",
    78  	).Error
    79  	if err != nil {
    80  		return fmt.Errorf("Error creating foreign key on "+
    81  			"oauth_access_tokens.client_id for oauth_clients(id): %s", err)
    82  	}
    83  	err = db.Model(new(OauthAccessToken)).AddForeignKey(
    84  		"user_id", "oauth_users(id)",
    85  		"RESTRICT", "RESTRICT",
    86  	).Error
    87  	if err != nil {
    88  		return fmt.Errorf("Error creating foreign key on "+
    89  			"oauth_access_tokens.user_id for oauth_users(id): %s", err)
    90  	}
    91  	err = db.Model(new(OauthAuthorizationCode)).AddForeignKey(
    92  		"client_id", "oauth_clients(id)",
    93  		"RESTRICT", "RESTRICT",
    94  	).Error
    95  	if err != nil {
    96  		return fmt.Errorf("Error creating foreign key on "+
    97  			"oauth_authorization_codes.client_id for oauth_clients(id): %s", err)
    98  	}
    99  	err = db.Model(new(OauthAuthorizationCode)).AddForeignKey(
   100  		"user_id", "oauth_users(id)",
   101  		"RESTRICT", "RESTRICT",
   102  	).Error
   103  	if err != nil {
   104  		return fmt.Errorf("Error creating foreign key on "+
   105  			"oauth_authorization_codes.user_id for oauth_users(id): %s", err)
   106  	}
   107  
   108  	return nil
   109  }