Skip to content
Snippets Groups Projects
sequence.go 647 B
package database

import (
	sq "github.com/Masterminds/squirrel"
)

type SequenceBuilder struct {
	name string
}

func Sequence(name string) SequenceBuilder {
	return SequenceBuilder{name}
}

func (s SequenceBuilder) Set(value int, isCalled bool) sq.SelectBuilder {
	return sq.Select().Column("setval(?, ?, ?)", s.name, value, isCalled)
}

func (s SequenceBuilder) Next() sq.SelectBuilder {
	return sq.Select().Column("nextval(?)", s.name)
}

func (s SequenceBuilder) Current() sq.SelectBuilder {
	return sq.Select().Column("currval(?)", s.name)
}

func (s SequenceBuilder) Last() sq.SelectBuilder {
	return sq.Select("last_value").From(s.name)
}