github.com/resonatecoop/id@v1.1.0-43/util/sql.go (about)

     1  package util
     2  
     3  import (
     4  	"database/sql"
     5  	"time"
     6  
     7  	"github.com/lib/pq"
     8  )
     9  
    10  // IntOrNull returns properly configured sql.NullInt64
    11  func IntOrNull(n int64) sql.NullInt64 {
    12  	return sql.NullInt64{Int64: n, Valid: true}
    13  }
    14  
    15  // PositiveIntOrNull returns properly configured sql.NullInt64 for a positive number
    16  func PositiveIntOrNull(n int64) sql.NullInt64 {
    17  	if n <= 0 {
    18  		return sql.NullInt64{Int64: 0, Valid: false}
    19  	}
    20  	return sql.NullInt64{Int64: n, Valid: true}
    21  }
    22  
    23  // FloatOrNull returns properly configured sql.NullFloat64
    24  func FloatOrNull(n float64) sql.NullFloat64 {
    25  	return sql.NullFloat64{Float64: n, Valid: true}
    26  }
    27  
    28  // PositiveFloatOrNull returns properly configured sql.NullFloat64 for a positive number
    29  func PositiveFloatOrNull(n float64) sql.NullFloat64 {
    30  	if n <= 0 {
    31  		return sql.NullFloat64{Float64: 0.0, Valid: false}
    32  	}
    33  	return sql.NullFloat64{Float64: n, Valid: true}
    34  }
    35  
    36  // StringOrNull returns properly configured sql.NullString
    37  func StringOrNull(str string) sql.NullString {
    38  	if str == "" {
    39  		return sql.NullString{String: "", Valid: false}
    40  	}
    41  	return sql.NullString{String: str, Valid: true}
    42  }
    43  
    44  // TimeOrNull returns properly confiigured pq.TimeNull
    45  func TimeOrNull(t *time.Time) pq.NullTime {
    46  	if t == nil {
    47  		return pq.NullTime{Time: time.Time{}, Valid: false}
    48  	}
    49  	return pq.NullTime{Time: *t, Valid: true}
    50  }