code: func (db *Database) First(dest DBModel, key interface{}) error {
  	modelKey, _ := primaryKey(dest)
  	in := reflect.Indirect(reflect.ValueOf(dest))
  	in.FieldByName(modelKey).Set(reflect.Indirect(reflect.ValueOf(key)))
  	return db.Model(dest).Where(in.Interface()).Scan(dest)
  }
docs: // First Scans the result of the selection query of type model using the specified id
  // Panics if key is not compatible with the primary key filed type or if the query formulation fails