//
// Code generated by go-jet DO NOT EDIT.
//
// WARNING: Changes to this file may cause incorrect behavior
// and will be lost if the code is regenerated
//

package table

import (
	"github.com/go-jet/jet/v2/postgres"
)

var EvaluationStatuses = newEvaluationStatusesTable("public", "evaluation_statuses", "")

type evaluationStatusesTable struct {
	postgres.Table

	// Columns
	ID            postgres.ColumnString
	DescriptionEn postgres.ColumnString
	DescriptionLv postgres.ColumnString
	DevNotes      postgres.ColumnString

	AllColumns     postgres.ColumnList
	MutableColumns postgres.ColumnList
}

type EvaluationStatusesTable struct {
	evaluationStatusesTable

	EXCLUDED evaluationStatusesTable
}

// AS creates new EvaluationStatusesTable with assigned alias
func (a EvaluationStatusesTable) AS(alias string) *EvaluationStatusesTable {
	return newEvaluationStatusesTable(a.SchemaName(), a.TableName(), alias)
}

// Schema creates new EvaluationStatusesTable with assigned schema name
func (a EvaluationStatusesTable) FromSchema(schemaName string) *EvaluationStatusesTable {
	return newEvaluationStatusesTable(schemaName, a.TableName(), a.Alias())
}

// WithPrefix creates new EvaluationStatusesTable with assigned table prefix
func (a EvaluationStatusesTable) WithPrefix(prefix string) *EvaluationStatusesTable {
	return newEvaluationStatusesTable(a.SchemaName(), prefix+a.TableName(), a.TableName())
}

// WithSuffix creates new EvaluationStatusesTable with assigned table suffix
func (a EvaluationStatusesTable) WithSuffix(suffix string) *EvaluationStatusesTable {
	return newEvaluationStatusesTable(a.SchemaName(), a.TableName()+suffix, a.TableName())
}

func newEvaluationStatusesTable(schemaName, tableName, alias string) *EvaluationStatusesTable {
	return &EvaluationStatusesTable{
		evaluationStatusesTable: newEvaluationStatusesTableImpl(schemaName, tableName, alias),
		EXCLUDED:                newEvaluationStatusesTableImpl("", "excluded", ""),
	}
}

func newEvaluationStatusesTableImpl(schemaName, tableName, alias string) evaluationStatusesTable {
	var (
		IDColumn            = postgres.StringColumn("id")
		DescriptionEnColumn = postgres.StringColumn("description_en")
		DescriptionLvColumn = postgres.StringColumn("description_lv")
		DevNotesColumn      = postgres.StringColumn("dev_notes")
		allColumns          = postgres.ColumnList{IDColumn, DescriptionEnColumn, DescriptionLvColumn, DevNotesColumn}
		mutableColumns      = postgres.ColumnList{DescriptionEnColumn, DescriptionLvColumn, DevNotesColumn}
	)

	return evaluationStatusesTable{
		Table: postgres.NewTable(schemaName, tableName, alias, allColumns...),

		//Columns
		ID:            IDColumn,
		DescriptionEn: DescriptionEnColumn,
		DescriptionLv: DescriptionLvColumn,
		DevNotes:      DevNotesColumn,

		AllColumns:     allColumns,
		MutableColumns: mutableColumns,
	}
}
