database

package
v0.0.0-...-7523edb Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 18, 2023 License: MIT Imports: 8 Imported by: 2

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Column

type Column struct {
	OrdinalPosition        int            `db:"ordinal_position"`
	Name                   string         `db:"column_name"`
	DataType               string         `db:"data_type"`
	DefaultValue           sql.NullString `db:"column_default"`
	IsNullable             string         `db:"is_nullable"`
	CharacterMaximumLength sql.NullInt64  `db:"character_maximum_length"`
	NumericPrecision       sql.NullInt64  `db:"numeric_precision"`
	ColumnKey              string         `db:"column_key"`      // mysql specific
	Extra                  string         `db:"extra"`           // mysql specific
	ConstraintName         sql.NullString `db:"constraint_name"` // pg specific
	ConstraintType         sql.NullString `db:"constraint_type"` // pg specific
}

Column stores information about a column.

type Database

type Database interface {
	DSN() string
	Connect() (err error)
	Close() (err error)

	GetTables() (tables []*Table, err error)
	PrepareGetColumnsOfTableStmt() (err error)
	GetColumnsOfTable(table *Table) (err error)

	IsPrimaryKey(column Column) bool
	IsAutoIncrement(column Column) bool
	IsNullable(column Column) bool

	GetStringDatatypes() []string
	IsString(column Column) bool

	GetTextDatatypes() []string
	IsText(column Column) bool

	GetIntegerDatatypes() []string
	IsInteger(column Column) bool

	GetFloatDatatypes() []string
	IsFloat(column Column) bool

	GetTemporalDatatypes() []string
	IsTemporal(column Column) bool
}

Database interface for the concrete databases.

func New

func New(s *settings.Settings) Database

New creates a new Database based on the given type in the settings.

type GeneralDatabase

type GeneralDatabase struct {
	GetColumnsOfTableStmt *sqlx.Stmt
	*sqlx.DB
	*settings.Settings
	// contains filtered or unexported fields
}

GeneralDatabase represents a base "class" database - for all other concrete databases it implements partly the Database interface.

func (*GeneralDatabase) Close

func (gdb *GeneralDatabase) Close() error

Close closes the database connection.

func (*GeneralDatabase) Connect

func (gdb *GeneralDatabase) Connect(dsn string) (err error)

Connect establishes a connection to the database with the given DSN. It pings the database to ensure it is reachable.

func (*GeneralDatabase) IsNullable

func (gdb *GeneralDatabase) IsNullable(column Column) bool

IsNullable returns true if the column is a nullable column.

type MySQL

type MySQL struct {
	*GeneralDatabase
	// contains filtered or unexported fields
}

MySQL implements the Database interface with help of GeneralDatabase.

func NewMySQL

func NewMySQL(s *settings.Settings) *MySQL

NewMySQL creates a new MySQL database.

func (*MySQL) Connect

func (mysql *MySQL) Connect() error

Connect connects to the database by the given data source name (dsn) of the concrete database.

func (*MySQL) DSN

func (mysql *MySQL) DSN() string

DSN creates the DSN String to connect to this database.

func (*MySQL) GetColumnsOfTable

func (mysql *MySQL) GetColumnsOfTable(table *Table) (err error)

GetColumnsOfTable executes the statement for retrieving the columns of a specific table for a given database.

func (*MySQL) GetFloatDatatypes

func (mysql *MySQL) GetFloatDatatypes() []string

GetFloatDatatypes returns the float datatypes for the MySQL database.

func (*MySQL) GetIntegerDatatypes

func (mysql *MySQL) GetIntegerDatatypes() []string

GetIntegerDatatypes returns the integer datatypes for the MySQL database.

func (*MySQL) GetStringDatatypes

func (mysql *MySQL) GetStringDatatypes() []string

GetStringDatatypes returns the string datatypes for the MySQL database.

func (*MySQL) GetTables

func (mysql *MySQL) GetTables() (tables []*Table, err error)

GetTables gets all tables for a given database by name.

func (*MySQL) GetTemporalDatatypes

func (mysql *MySQL) GetTemporalDatatypes() []string

GetTemporalDatatypes returns the temporal datatypes for the MySQL database.

func (*MySQL) GetTextDatatypes

func (mysql *MySQL) GetTextDatatypes() []string

GetTextDatatypes returns the text datatypes for the MySQL database.

func (*MySQL) IsAutoIncrement

func (mysql *MySQL) IsAutoIncrement(column Column) bool

IsAutoIncrement checks if the column is an auto_increment column.

func (*MySQL) IsFloat

func (mysql *MySQL) IsFloat(column Column) bool

IsFloat returns true if colum is of type float for the MySQL database.

func (*MySQL) IsInteger

func (mysql *MySQL) IsInteger(column Column) bool

IsInteger returns true if colum is of type integer for the MySQL database.

func (*MySQL) IsPrimaryKey

func (mysql *MySQL) IsPrimaryKey(column Column) bool

IsPrimaryKey checks if the column belongs to the primary key.

func (*MySQL) IsString

func (mysql *MySQL) IsString(column Column) bool

IsString returns true if the colum is of type string for the MySQL database.

func (*MySQL) IsTemporal

func (mysql *MySQL) IsTemporal(column Column) bool

IsTemporal returns true if colum is of type temporal for the MySQL database.

func (*MySQL) IsText

func (mysql *MySQL) IsText(column Column) bool

IsText returns true if colum is of type text for the MySQL database.

func (*MySQL) PrepareGetColumnsOfTableStmt

func (mysql *MySQL) PrepareGetColumnsOfTableStmt() (err error)

PrepareGetColumnsOfTableStmt prepares the statement for retrieving the columns of a specific table for a given database.

type Postgresql

type Postgresql struct {
	*GeneralDatabase
	// contains filtered or unexported fields
}

Postgresql implements the Database interface with help of GeneralDatabase.

func NewPostgresql

func NewPostgresql(s *settings.Settings) *Postgresql

NewPostgresql creates a new Postgresql database.

func (*Postgresql) Connect

func (pg *Postgresql) Connect() error

Connect connects to the database by the given data source name (dsn) of the concrete database.

func (*Postgresql) DSN

func (pg *Postgresql) DSN() string

DSN creates the DSN String to connect to this database.

func (*Postgresql) GetColumnsOfTable

func (pg *Postgresql) GetColumnsOfTable(table *Table) (err error)

GetColumnsOfTable executes the statement for retrieving the columns of a specific table in a given schema.

func (*Postgresql) GetFloatDatatypes

func (pg *Postgresql) GetFloatDatatypes() []string

GetFloatDatatypes returns the float datatypes for the Postgresql database.

func (*Postgresql) GetIntegerDatatypes

func (pg *Postgresql) GetIntegerDatatypes() []string

GetIntegerDatatypes returns the integer datatypes for the Postgresql database.

func (*Postgresql) GetStringDatatypes

func (pg *Postgresql) GetStringDatatypes() []string

GetStringDatatypes returns the string datatypes for the Postgresql database.

func (*Postgresql) GetTables

func (pg *Postgresql) GetTables() (tables []*Table, err error)

GetTables gets all tables for a given schema by name.

func (*Postgresql) GetTemporalDatatypes

func (pg *Postgresql) GetTemporalDatatypes() []string

GetTemporalDatatypes returns the temporal datatypes for the Postgresql database.

func (*Postgresql) GetTextDatatypes

func (pg *Postgresql) GetTextDatatypes() []string

GetTextDatatypes returns the text datatypes for the Postgresql database.

func (*Postgresql) IsAutoIncrement

func (pg *Postgresql) IsAutoIncrement(column Column) bool

IsAutoIncrement checks if the column is an auto_increment column.

func (*Postgresql) IsFloat

func (pg *Postgresql) IsFloat(column Column) bool

IsFloat returns true if colum is of type float for the Postgresql database.

func (*Postgresql) IsInteger

func (pg *Postgresql) IsInteger(column Column) bool

IsInteger returns true if colum is of type integer for the Postgresql database.

func (*Postgresql) IsPrimaryKey

func (pg *Postgresql) IsPrimaryKey(column Column) bool

IsPrimaryKey checks if the column belongs to the primary key.

func (*Postgresql) IsString

func (pg *Postgresql) IsString(column Column) bool

IsString returns true if colum is of type string for the Postgresql database.

func (*Postgresql) IsTemporal

func (pg *Postgresql) IsTemporal(column Column) bool

IsTemporal returns true if colum is of type temporal for the Postgresql database.

func (*Postgresql) IsText

func (pg *Postgresql) IsText(column Column) bool

IsText returns true if colum is of type text for the Postgresql database.

func (*Postgresql) PrepareGetColumnsOfTableStmt

func (pg *Postgresql) PrepareGetColumnsOfTableStmt() (err error)

PrepareGetColumnsOfTableStmt prepares the statement for retrieving the columns of a specific table for a given database.

type SQLite

type SQLite struct {
	*GeneralDatabase
}

SQLite implements the Database interface with help of GeneralDatabase.

func NewSQLite

func NewSQLite(s *settings.Settings) *SQLite

NewSQLite creates a new SQLite database.

func (*SQLite) Connect

func (s *SQLite) Connect() (err error)

Connect connects to the database by the given data source name (dsn) of the concrete database.

func (*SQLite) DSN

func (s *SQLite) DSN() string

DSN creates the DSN String to connect to this database.

func (*SQLite) GetColumnsOfTable

func (s *SQLite) GetColumnsOfTable(table *Table) (err error)

func (*SQLite) GetFloatDatatypes

func (s *SQLite) GetFloatDatatypes() []string

func (*SQLite) GetIntegerDatatypes

func (s *SQLite) GetIntegerDatatypes() []string

func (*SQLite) GetStringDatatypes

func (s *SQLite) GetStringDatatypes() []string

func (*SQLite) GetTables

func (s *SQLite) GetTables() (tables []*Table, err error)

func (*SQLite) GetTemporalDatatypes

func (s *SQLite) GetTemporalDatatypes() []string

func (*SQLite) GetTextDatatypes

func (s *SQLite) GetTextDatatypes() []string

func (*SQLite) IsAutoIncrement

func (s *SQLite) IsAutoIncrement(column Column) bool

func (*SQLite) IsFloat

func (s *SQLite) IsFloat(column Column) bool

func (*SQLite) IsInteger

func (s *SQLite) IsInteger(column Column) bool

func (*SQLite) IsPrimaryKey

func (s *SQLite) IsPrimaryKey(column Column) bool

func (*SQLite) IsString

func (s *SQLite) IsString(column Column) bool

func (*SQLite) IsTemporal

func (s *SQLite) IsTemporal(_ Column) bool

func (*SQLite) IsText

func (s *SQLite) IsText(column Column) bool

func (*SQLite) PrepareGetColumnsOfTableStmt

func (s *SQLite) PrepareGetColumnsOfTableStmt() (err error)

type Table

type Table struct {
	Name    string `db:"table_name"`
	Columns []Column
}

Table has a name and a set (slice) of columns.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL