//
// 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 Complaints = newComplaintsTable("backend", "complaints", "")

type complaintsTable struct {
	postgres.Table

	// Columns
	ComplaintID      postgres.ColumnString
	ComplainantID    postgres.ColumnString
	GameID           postgres.ColumnString
	Variant          postgres.ColumnString
	DictVersion      postgres.ColumnString
	Word             postgres.ColumnString
	WasValid         postgres.ColumnBool
	Note             postgres.ColumnString
	Status           postgres.ColumnString
	CreatedAt        postgres.ColumnTimestampz
	Disposition      postgres.ColumnString
	ResolutionNote   postgres.ColumnString
	ResolvedAt       postgres.ColumnTimestampz
	AppliedInVersion postgres.ColumnString

	AllColumns     postgres.ColumnList
	MutableColumns postgres.ColumnList
	DefaultColumns postgres.ColumnList
}

type ComplaintsTable struct {
	complaintsTable

	EXCLUDED complaintsTable
}

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

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

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

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

func newComplaintsTable(schemaName, tableName, alias string) *ComplaintsTable {
	return &ComplaintsTable{
		complaintsTable: newComplaintsTableImpl(schemaName, tableName, alias),
		EXCLUDED:        newComplaintsTableImpl("", "excluded", ""),
	}
}

func newComplaintsTableImpl(schemaName, tableName, alias string) complaintsTable {
	var (
		ComplaintIDColumn      = postgres.StringColumn("complaint_id")
		ComplainantIDColumn    = postgres.StringColumn("complainant_id")
		GameIDColumn           = postgres.StringColumn("game_id")
		VariantColumn          = postgres.StringColumn("variant")
		DictVersionColumn      = postgres.StringColumn("dict_version")
		WordColumn             = postgres.StringColumn("word")
		WasValidColumn         = postgres.BoolColumn("was_valid")
		NoteColumn             = postgres.StringColumn("note")
		StatusColumn           = postgres.StringColumn("status")
		CreatedAtColumn        = postgres.TimestampzColumn("created_at")
		DispositionColumn      = postgres.StringColumn("disposition")
		ResolutionNoteColumn   = postgres.StringColumn("resolution_note")
		ResolvedAtColumn       = postgres.TimestampzColumn("resolved_at")
		AppliedInVersionColumn = postgres.StringColumn("applied_in_version")
		allColumns             = postgres.ColumnList{ComplaintIDColumn, ComplainantIDColumn, GameIDColumn, VariantColumn, DictVersionColumn, WordColumn, WasValidColumn, NoteColumn, StatusColumn, CreatedAtColumn, DispositionColumn, ResolutionNoteColumn, ResolvedAtColumn, AppliedInVersionColumn}
		mutableColumns         = postgres.ColumnList{ComplainantIDColumn, GameIDColumn, VariantColumn, DictVersionColumn, WordColumn, WasValidColumn, NoteColumn, StatusColumn, CreatedAtColumn, DispositionColumn, ResolutionNoteColumn, ResolvedAtColumn, AppliedInVersionColumn}
		defaultColumns         = postgres.ColumnList{NoteColumn, StatusColumn, CreatedAtColumn, DispositionColumn, ResolutionNoteColumn, AppliedInVersionColumn}
	)

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

		//Columns
		ComplaintID:      ComplaintIDColumn,
		ComplainantID:    ComplainantIDColumn,
		GameID:           GameIDColumn,
		Variant:          VariantColumn,
		DictVersion:      DictVersionColumn,
		Word:             WordColumn,
		WasValid:         WasValidColumn,
		Note:             NoteColumn,
		Status:           StatusColumn,
		CreatedAt:        CreatedAtColumn,
		Disposition:      DispositionColumn,
		ResolutionNote:   ResolutionNoteColumn,
		ResolvedAt:       ResolvedAtColumn,
		AppliedInVersion: AppliedInVersionColumn,

		AllColumns:     allColumns,
		MutableColumns: mutableColumns,
		DefaultColumns: defaultColumns,
	}
}
