Vorbereitung Release 0.2.0 #83
@@ -12,7 +12,6 @@ import (
|
|||||||
"database/sql"
|
"database/sql"
|
||||||
|
|
||||||
"github.com/uptrace/bun"
|
"github.com/uptrace/bun"
|
||||||
"github.com/uptrace/bun/extra/bundebug"
|
|
||||||
|
|
||||||
"github.com/uptrace/bun/dialect/pgdialect"
|
"github.com/uptrace/bun/dialect/pgdialect"
|
||||||
"github.com/uptrace/bun/driver/pgdriver"
|
"github.com/uptrace/bun/driver/pgdriver"
|
||||||
@@ -28,7 +27,7 @@ func GetTestDatabase() (*bun.DB, error) {
|
|||||||
sqldb.SetMaxIdleConns(4)
|
sqldb.SetMaxIdleConns(4)
|
||||||
|
|
||||||
DB := bun.NewDB(sqldb, pgdialect.New())
|
DB := bun.NewDB(sqldb, pgdialect.New())
|
||||||
DB.AddQueryHook(bundebug.NewQueryHook(bundebug.WithVerbose(true)))
|
// DB.AddQueryHook(bundebug.NewQueryHook(bundebug.WithVerbose(true)))
|
||||||
|
|
||||||
if err = DB.Ping(); err != nil {
|
if err = DB.Ping(); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|||||||
@@ -0,0 +1,116 @@
|
|||||||
|
package schema
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/uptrace/bun"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Sport struct {
|
||||||
|
bun.BaseModel `bun:"table:sport"`
|
||||||
|
|
||||||
|
ID string `bun:"id,pk"`
|
||||||
|
CreatedAt time.Time `bun:"created_date,nullzero,notnull,default:current_timestamp"`
|
||||||
|
UpdatedAt time.Time `bun:"last_modified_date,nullzero,notnull,default:current_timestamp"`
|
||||||
|
Version int `bun:"version,default:0"`
|
||||||
|
Teams []Team `bun:"rel:has-many,join:id=sport_id"`
|
||||||
|
Positions []FieldPosition `bun:"rel:has-many,join:id=sport_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Team struct {
|
||||||
|
bun.BaseModel `bun:"table:team"`
|
||||||
|
|
||||||
|
ID string `bun:"id,pk"`
|
||||||
|
CreatedAt time.Time `bun:"created_date,nullzero,notnull,default:current_timestamp"`
|
||||||
|
UpdatedAt time.Time `bun:"last_modified_date,nullzero,notnull,default:current_timestamp"`
|
||||||
|
Version int `bun:"version,default:0"`
|
||||||
|
Name string `bun:"name"`
|
||||||
|
Shortname string `bun:"short_name"`
|
||||||
|
Roosters []Rooster `bun:"rel:has-many,join:id=team_id"`
|
||||||
|
SportID *string `bun:"sport_id"`
|
||||||
|
Sport *Sport `bun:"rel:belongs-to,join:sport_id=id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type FieldPosition struct {
|
||||||
|
bun.BaseModel `bun:"table:field_position"`
|
||||||
|
|
||||||
|
ID string `bun:"id,pk"`
|
||||||
|
CreatedAt time.Time `bun:"created_date,nullzero,notnull,default:current_timestamp"`
|
||||||
|
UpdatedAt time.Time `bun:"last_modified_date,nullzero,notnull,default:current_timestamp"`
|
||||||
|
Version int `bun:"version,default:0"`
|
||||||
|
Name string `bun:"name"`
|
||||||
|
Shortname string `bun:"short_name"`
|
||||||
|
SportID *string `bun:"sport_id"`
|
||||||
|
Sport *Sport `bun:"rel:belongs-to,join:sport_id=id"`
|
||||||
|
Roosters []Rooster `bun:"rel:has-many,join:id=position_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Player struct {
|
||||||
|
bun.BaseModel `bun:"table:player"`
|
||||||
|
|
||||||
|
ID string `bun:"id,pk"`
|
||||||
|
CreatedAt time.Time `bun:"created_date,nullzero,notnull,default:current_timestamp"`
|
||||||
|
UpdatedAt time.Time `bun:"last_modified_date,nullzero,notnull,default:current_timestamp"`
|
||||||
|
Version int `bun:"version,default:0"`
|
||||||
|
Firstname string `bun:"first_name"`
|
||||||
|
Lastname string `bun:"last_name"`
|
||||||
|
Roosters []Rooster `bun:"rel:has-many,join:id=player_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Rooster struct {
|
||||||
|
bun.BaseModel `bun:"table:rooster"`
|
||||||
|
|
||||||
|
ID string `bun:"id,pk"`
|
||||||
|
CreatedAt time.Time `bun:"created_date,nullzero,notnull,default:current_timestamp"`
|
||||||
|
UpdatedAt time.Time `bun:"last_modified_date,nullzero,notnull,default:current_timestamp"`
|
||||||
|
Version int `bun:"version,default:0"`
|
||||||
|
Year int `bun:"year"`
|
||||||
|
TeamID *string `bun:"team_id"`
|
||||||
|
Team *Team `bun:"rel:belongs-to,join:team_id=id"`
|
||||||
|
PlayerID *string `bun:"player_id"`
|
||||||
|
Player *Player `bun:"rel:belongs-to,join:player_id=id"`
|
||||||
|
PositionID *string `bun:"position_id"`
|
||||||
|
Position *FieldPosition `bun:"rel:belongs-to,join:position_id=id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type CardSet struct {
|
||||||
|
bun.BaseModel `bun:"table:card_set"`
|
||||||
|
|
||||||
|
ID string `bun:"id,pk"`
|
||||||
|
CreatedAt time.Time `bun:"created_date,nullzero,notnull,default:current_timestamp"`
|
||||||
|
UpdatedAt time.Time `bun:"last_modified_date,nullzero,notnull,default:current_timestamp"`
|
||||||
|
Version int `bun:"version,default:0"`
|
||||||
|
Name string `bun:"name"`
|
||||||
|
ParallelSet bool `bun:"parallel_set"`
|
||||||
|
InsertSet bool `bun:"insert_set"`
|
||||||
|
VendorID *string `bun:"vendor_id"`
|
||||||
|
Vendor *Vendor `bun:"rel:belongs-to,join:vendor_id=id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Vendor struct {
|
||||||
|
bun.BaseModel `bun:"table:vendor"`
|
||||||
|
|
||||||
|
ID string `bun:"id,pk"`
|
||||||
|
CreatedAt time.Time `bun:"created_date,nullzero,notnull,default:current_timestamp"`
|
||||||
|
UpdatedAt time.Time `bun:"last_modified_date,nullzero,notnull,default:current_timestamp"`
|
||||||
|
Version int `bun:"version,default:0"`
|
||||||
|
Name string `bun:"name"`
|
||||||
|
CardSets []CardSet `bun:"rel:has-many,join:id=vendor_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Card struct {
|
||||||
|
bun.BaseModel `bun:"table:card"`
|
||||||
|
|
||||||
|
ID string `bun:"id,pk"`
|
||||||
|
CreatedAt time.Time `bun:"created_date,nullzero,notnull,default:current_timestamp"`
|
||||||
|
UpdatedAt time.Time `bun:"last_modified_date,nullzero,notnull,default:current_timestamp"`
|
||||||
|
Version int `bun:"version,default:0"`
|
||||||
|
CardNumber int `bun:"card_number"`
|
||||||
|
Year int `bun:"year"`
|
||||||
|
VendorID *string `bun:"vendor_id"`
|
||||||
|
Vendor *Vendor `bun:"rel:belongs-to,join:vendor_id=id"`
|
||||||
|
CardSetID *string `bun:"card_set_id"`
|
||||||
|
CardSet *CardSet `bun:"rel:belongs-to,join:card_set_id=id"`
|
||||||
|
RoosterID *string `bun:"rooster_id"`
|
||||||
|
Rooster *Rooster `bun:"rel:belongs-to,join:rooster_id=id"`
|
||||||
|
}
|
||||||
@@ -0,0 +1,155 @@
|
|||||||
|
package schema
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"log"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
"github.com/uptrace/bun"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestSelectSports(t *testing.T) {
|
||||||
|
var sports []Sport
|
||||||
|
var err error
|
||||||
|
var db *bun.DB
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
|
db, err = GetTestDatabase()
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
err = db.NewSelect().Model(&sports).Scan(ctx)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Equal(t, 4, len(sports))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSelectTeams(t *testing.T) {
|
||||||
|
var teams []Team
|
||||||
|
var err error
|
||||||
|
var db *bun.DB
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
|
db, err = GetTestDatabase()
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
err = db.NewSelect().Model(&teams).Scan(ctx)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Equal(t, 122, len(teams))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSelectFieldPositions(t *testing.T) {
|
||||||
|
var positions []FieldPosition
|
||||||
|
var err error
|
||||||
|
var db *bun.DB
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
|
db, err = GetTestDatabase()
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
err = db.NewSelect().Model(&positions).Scan(ctx)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Equal(t, 44, len(positions))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSelectPlayers(t *testing.T) {
|
||||||
|
var players []Player
|
||||||
|
var err error
|
||||||
|
var db *bun.DB
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
|
db, err = GetTestDatabase()
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
err = db.NewSelect().Model(&players).Scan(ctx)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Equal(t, 38, len(players))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSelectRoosters(t *testing.T) {
|
||||||
|
var roosters []Rooster
|
||||||
|
var err error
|
||||||
|
var db *bun.DB
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
|
db, err = GetTestDatabase()
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
err = db.NewSelect().Model(&roosters).Scan(ctx)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Equal(t, 11, len(roosters))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSelectVendors(t *testing.T) {
|
||||||
|
var vendors []Vendor
|
||||||
|
var err error
|
||||||
|
var db *bun.DB
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
|
db, err = GetTestDatabase()
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
err = db.NewSelect().Model(&vendors).Scan(ctx)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Equal(t, 9, len(vendors))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSelectCardSets(t *testing.T) {
|
||||||
|
var cardSets []CardSet
|
||||||
|
var err error
|
||||||
|
var db *bun.DB
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
|
db, err = GetTestDatabase()
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
err = db.NewSelect().Model(&cardSets).Scan(ctx)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Equal(t, 15, len(cardSets))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSelectCards(t *testing.T) {
|
||||||
|
var cards []Card
|
||||||
|
var err error
|
||||||
|
var db *bun.DB
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
|
db, err = GetTestDatabase()
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
err = db.NewSelect().Model(&cards).Scan(ctx)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Equal(t, 10, len(cards))
|
||||||
|
}
|
||||||
@@ -11,15 +11,13 @@ import jakarta.validation.constraints.NotNull;
|
|||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import lombok.ToString;
|
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
@Entity
|
@Entity
|
||||||
@Table(indexes = {@Index(columnList = "team_id, player_id, position_id")},
|
@Table(indexes = { @Index(columnList = "team_id, player_id, position_id") }, uniqueConstraints = {
|
||||||
uniqueConstraints = {@UniqueConstraint(name = "uniqueRooster", columnNames = {"year", "team_id", "player_id", "position_id"})}
|
@UniqueConstraint(name = "uniqueRooster", columnNames = { "year", "team_id", "player_id", "position_id" }) })
|
||||||
)
|
|
||||||
public class Rooster extends AbstractEntity {
|
public class Rooster extends AbstractEntity {
|
||||||
|
|
||||||
private int year;
|
private int year;
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ import jakarta.validation.constraints.NotEmpty;
|
|||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import lombok.ToString;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a vendor entity.
|
* Represents a vendor entity.
|
||||||
@@ -23,9 +22,7 @@ import lombok.ToString;
|
|||||||
@Setter
|
@Setter
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
@Entity
|
@Entity
|
||||||
@Table(indexes = {@Index(columnList = "name")},
|
@Table(indexes = { @Index(columnList = "name") }, uniqueConstraints = { @UniqueConstraint(columnNames = "name") })
|
||||||
uniqueConstraints = {@UniqueConstraint(columnNames = "name")}
|
|
||||||
)
|
|
||||||
public class Vendor extends AbstractEntity {
|
public class Vendor extends AbstractEntity {
|
||||||
|
|
||||||
@NotEmpty
|
@NotEmpty
|
||||||
|
|||||||
Reference in New Issue
Block a user