github.com/artisanhe/tools@v1.0.1-0.20210607022958-19a8fef2eb04/sqlx/presets/primary_id.go (about)

     1  package presets
     2  
     3  import (
     4  	"database/sql"
     5  
     6  	"github.com/artisanhe/tools/sqlx"
     7  )
     8  
     9  var _ interface {
    10  	sqlx.WithPrimaryKey
    11  } = (*PrimaryID)(nil)
    12  
    13  type PrimaryID struct {
    14  	ID uint64 `db:"F_id" sql:"bigint unsigned NOT NULL AUTO_INCREMENT" json:"-"`
    15  }
    16  
    17  func (id PrimaryID) PrimaryKey() sqlx.FieldNames {
    18  	return []string{"ID"}
    19  }
    20  
    21  func (id *PrimaryID) AfterInsert(result sql.Result) error {
    22  	lastInsertID, err := result.LastInsertId()
    23  	if err != nil {
    24  		return err
    25  	}
    26  	id.ID = uint64(lastInsertID)
    27  	return nil
    28  }