diff --git a/kontor-echo/pkg/schema/comics_test.go b/kontor-echo/pkg/schema/comics_test.go index ea2505e..32e8981 100644 --- a/kontor-echo/pkg/schema/comics_test.go +++ b/kontor-echo/pkg/schema/comics_test.go @@ -12,7 +12,6 @@ import ( "database/sql" "github.com/uptrace/bun" - "github.com/uptrace/bun/extra/bundebug" "github.com/uptrace/bun/dialect/pgdialect" "github.com/uptrace/bun/driver/pgdriver" @@ -28,7 +27,7 @@ func GetTestDatabase() (*bun.DB, error) { sqldb.SetMaxIdleConns(4) 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 { return nil, err diff --git a/kontor-echo/pkg/schema/tysc.go b/kontor-echo/pkg/schema/tysc.go new file mode 100644 index 0000000..e4a06bd --- /dev/null +++ b/kontor-echo/pkg/schema/tysc.go @@ -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"` +} diff --git a/kontor-echo/pkg/schema/tysc_test.go b/kontor-echo/pkg/schema/tysc_test.go new file mode 100644 index 0000000..92c0a5b --- /dev/null +++ b/kontor-echo/pkg/schema/tysc_test.go @@ -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)) +} diff --git a/kontor-spring/src/main/java/de/thpeetz/kontor/tysc/data/Rooster.java b/kontor-spring/src/main/java/de/thpeetz/kontor/tysc/data/Rooster.java index 6410b07..b0d3a3a 100644 --- a/kontor-spring/src/main/java/de/thpeetz/kontor/tysc/data/Rooster.java +++ b/kontor-spring/src/main/java/de/thpeetz/kontor/tysc/data/Rooster.java @@ -11,19 +11,17 @@ import jakarta.validation.constraints.NotNull; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; -import lombok.ToString; @Getter @Setter -@EqualsAndHashCode(callSuper=false) +@EqualsAndHashCode(callSuper = false) @Entity -@Table(indexes = {@Index(columnList = "team_id, player_id, position_id")}, - uniqueConstraints = {@UniqueConstraint(name = "uniqueRooster", columnNames = {"year", "team_id", "player_id", "position_id"})} -) +@Table(indexes = { @Index(columnList = "team_id, player_id, position_id") }, uniqueConstraints = { + @UniqueConstraint(name = "uniqueRooster", columnNames = { "year", "team_id", "player_id", "position_id" }) }) public class Rooster extends AbstractEntity { private int year; - + @ManyToOne @JoinColumn(name = "team_id") @NotNull diff --git a/kontor-spring/src/main/java/de/thpeetz/kontor/tysc/data/Vendor.java b/kontor-spring/src/main/java/de/thpeetz/kontor/tysc/data/Vendor.java index 0bd530f..a7a9305 100644 --- a/kontor-spring/src/main/java/de/thpeetz/kontor/tysc/data/Vendor.java +++ b/kontor-spring/src/main/java/de/thpeetz/kontor/tysc/data/Vendor.java @@ -14,18 +14,15 @@ import jakarta.validation.constraints.NotEmpty; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; -import lombok.ToString; /** * Represents a vendor entity. */ @Getter @Setter -@EqualsAndHashCode(callSuper=false) +@EqualsAndHashCode(callSuper = false) @Entity -@Table(indexes = {@Index(columnList = "name")}, - uniqueConstraints = {@UniqueConstraint(columnNames = "name")} -) +@Table(indexes = { @Index(columnList = "name") }, uniqueConstraints = { @UniqueConstraint(columnNames = "name") }) public class Vendor extends AbstractEntity { @NotEmpty