fix SQLite
This commit is contained in:
@@ -121,97 +121,130 @@ class TurnierRepository {
|
||||
fun getAllTurniere(): List<Turnier> = transaction {
|
||||
log.info("Fetching all tournaments from database...")
|
||||
|
||||
// Get all tournaments
|
||||
val turniere = TurniereTable.selectAll().map { row ->
|
||||
Turnier(
|
||||
name = row[TurniereTable.name],
|
||||
datum = row[TurniereTable.datum],
|
||||
number = row[TurniereTable.number]
|
||||
)
|
||||
}
|
||||
|
||||
// For each tournament, get its competitions
|
||||
turniere.forEach { turnier ->
|
||||
val bewerbeList = BewerbeTable.selectAll().where { BewerbeTable.turnierNumber eq turnier.number }.map { row ->
|
||||
Bewerb(
|
||||
nummer = row[BewerbeTable.nummer],
|
||||
titel = row[BewerbeTable.titel],
|
||||
klasse = row[BewerbeTable.klasse],
|
||||
task = row[BewerbeTable.task]
|
||||
try {
|
||||
// Get all tournaments
|
||||
val turniere = TurniereTable.selectAll().map { row ->
|
||||
Turnier(
|
||||
name = row[TurniereTable.name],
|
||||
datum = row[TurniereTable.datum],
|
||||
number = row[TurniereTable.number]
|
||||
)
|
||||
}
|
||||
turnier.bewerbe = bewerbeList
|
||||
}
|
||||
|
||||
turniere
|
||||
log.info("Found ${turniere.size} tournaments in database")
|
||||
|
||||
// For each tournament, get its competitions
|
||||
turniere.forEach { turnier ->
|
||||
try {
|
||||
val bewerbeList = BewerbeTable.selectAll().where { BewerbeTable.turnierNumber eq turnier.number }.map { row ->
|
||||
Bewerb(
|
||||
nummer = row[BewerbeTable.nummer],
|
||||
titel = row[BewerbeTable.titel],
|
||||
klasse = row[BewerbeTable.klasse],
|
||||
task = row[BewerbeTable.task]
|
||||
)
|
||||
}
|
||||
turnier.bewerbe = bewerbeList
|
||||
log.info("Found ${bewerbeList.size} competitions for tournament ${turnier.number}")
|
||||
} catch (e: Exception) {
|
||||
log.error("Error fetching competitions for tournament ${turnier.number}", e)
|
||||
turnier.bewerbe = emptyList() // Set empty list to avoid null pointer exceptions
|
||||
}
|
||||
}
|
||||
|
||||
turniere
|
||||
} catch (e: Exception) {
|
||||
log.error("Error fetching tournaments from database", e)
|
||||
emptyList() // Return empty list instead of throwing exception
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Inserts dummy tournaments with competitions if the table is empty.
|
||||
*/
|
||||
fun insertDummyTurnierIfEmpty() = transaction {
|
||||
if (TurniereTable.selectAll().count() == 0L) {
|
||||
log.info("Turnier table is empty, inserting dummy tournaments...")
|
||||
try {
|
||||
// First check if the table is empty
|
||||
val count = TurniereTable.selectAll().count()
|
||||
log.info("Current tournament count in database: $count")
|
||||
|
||||
// Insert first tournament
|
||||
val turnierNumber1 = 25319
|
||||
TurniereTable.insert {
|
||||
it[TurniereTable.number] = turnierNumber1
|
||||
it[TurniereTable.name] = "CSN-C Edelhof April 2025"
|
||||
it[TurniereTable.datum] = "14.04.2025 - 15.04.2025"
|
||||
if (count == 0L) {
|
||||
log.info("Turnier table is empty, inserting dummy tournaments...")
|
||||
|
||||
try {
|
||||
// Insert first tournament
|
||||
val turnierNumber1 = 25319
|
||||
TurniereTable.insert {
|
||||
it[TurniereTable.number] = turnierNumber1
|
||||
it[TurniereTable.name] = "CSN-C Edelhof April 2025"
|
||||
it[TurniereTable.datum] = "14.04.2025 - 15.04.2025"
|
||||
}
|
||||
log.info("Inserted first tournament with number $turnierNumber1")
|
||||
|
||||
// Insert competitions for first tournament
|
||||
BewerbeTable.insert {
|
||||
it[BewerbeTable.nummer] = 1
|
||||
it[BewerbeTable.titel] = "Stilspringprüfung"
|
||||
it[BewerbeTable.klasse] = "60 cm"
|
||||
it[BewerbeTable.task] = null
|
||||
it[BewerbeTable.turnierNumber] = turnierNumber1
|
||||
}
|
||||
|
||||
BewerbeTable.insert {
|
||||
it[BewerbeTable.nummer] = 2
|
||||
it[BewerbeTable.titel] = "Dressurprüfung"
|
||||
it[BewerbeTable.klasse] = "Kl. A"
|
||||
it[BewerbeTable.task] = "DRA 1"
|
||||
it[BewerbeTable.turnierNumber] = turnierNumber1
|
||||
}
|
||||
log.info("Inserted competitions for first tournament")
|
||||
|
||||
// Insert second tournament (as specified in the issue description)
|
||||
val turnierNumber2 = 25320
|
||||
TurniereTable.insert {
|
||||
it[TurniereTable.number] = turnierNumber2
|
||||
it[TurniereTable.name] = "CDN-C CDNP-C NEU Neumarkt/M., OÖ"
|
||||
it[TurniereTable.datum] = "8. JUNI 2025"
|
||||
}
|
||||
log.info("Inserted second tournament with number $turnierNumber2")
|
||||
|
||||
// Insert competitions for second tournament
|
||||
BewerbeTable.insert {
|
||||
it[BewerbeTable.nummer] = 1
|
||||
it[BewerbeTable.titel] = "Dressurprüfung"
|
||||
it[BewerbeTable.klasse] = "Kl. A"
|
||||
it[BewerbeTable.task] = "DRA 2"
|
||||
it[BewerbeTable.turnierNumber] = turnierNumber2
|
||||
}
|
||||
|
||||
BewerbeTable.insert {
|
||||
it[BewerbeTable.nummer] = 2
|
||||
it[BewerbeTable.titel] = "Dressurprüfung"
|
||||
it[BewerbeTable.klasse] = "Kl. L"
|
||||
it[BewerbeTable.task] = "DRL 1"
|
||||
it[BewerbeTable.turnierNumber] = turnierNumber2
|
||||
}
|
||||
|
||||
BewerbeTable.insert {
|
||||
it[BewerbeTable.nummer] = 3
|
||||
it[BewerbeTable.titel] = "Dressurprüfung"
|
||||
it[BewerbeTable.klasse] = "Kl. L"
|
||||
it[BewerbeTable.task] = "DRL 2"
|
||||
it[BewerbeTable.turnierNumber] = turnierNumber2
|
||||
}
|
||||
log.info("Inserted competitions for second tournament")
|
||||
|
||||
log.info("Dummy tournaments and competitions inserted successfully.")
|
||||
} catch (e: Exception) {
|
||||
log.error("Error inserting dummy tournaments", e)
|
||||
// Don't rethrow, allow the application to continue
|
||||
}
|
||||
} else {
|
||||
log.info("Turnier table is not empty, skipping dummy data insertion")
|
||||
}
|
||||
|
||||
// Insert competitions for first tournament
|
||||
BewerbeTable.insert {
|
||||
it[BewerbeTable.nummer] = 1
|
||||
it[BewerbeTable.titel] = "Stilspringprüfung"
|
||||
it[BewerbeTable.klasse] = "60 cm"
|
||||
it[BewerbeTable.task] = null
|
||||
it[BewerbeTable.turnierNumber] = turnierNumber1
|
||||
}
|
||||
|
||||
BewerbeTable.insert {
|
||||
it[BewerbeTable.nummer] = 2
|
||||
it[BewerbeTable.titel] = "Dressurprüfung"
|
||||
it[BewerbeTable.klasse] = "Kl. A"
|
||||
it[BewerbeTable.task] = "DRA 1"
|
||||
it[BewerbeTable.turnierNumber] = turnierNumber1
|
||||
}
|
||||
|
||||
// Insert second tournament (as specified in the issue description)
|
||||
val turnierNumber2 = 25320
|
||||
TurniereTable.insert {
|
||||
it[TurniereTable.number] = turnierNumber2
|
||||
it[TurniereTable.name] = "CDN-C CDNP-C NEU Neumarkt/M., OÖ"
|
||||
it[TurniereTable.datum] = "8. JUNI 2025"
|
||||
}
|
||||
|
||||
// Insert competitions for second tournament
|
||||
BewerbeTable.insert {
|
||||
it[BewerbeTable.nummer] = 1
|
||||
it[BewerbeTable.titel] = "Dressurprüfung"
|
||||
it[BewerbeTable.klasse] = "Kl. A"
|
||||
it[BewerbeTable.task] = "DRA 2"
|
||||
it[BewerbeTable.turnierNumber] = turnierNumber2
|
||||
}
|
||||
|
||||
BewerbeTable.insert {
|
||||
it[BewerbeTable.nummer] = 2
|
||||
it[BewerbeTable.titel] = "Dressurprüfung"
|
||||
it[BewerbeTable.klasse] = "Kl. L"
|
||||
it[BewerbeTable.task] = "DRL 1"
|
||||
it[BewerbeTable.turnierNumber] = turnierNumber2
|
||||
}
|
||||
|
||||
BewerbeTable.insert {
|
||||
it[BewerbeTable.nummer] = 3
|
||||
it[BewerbeTable.titel] = "Dressurprüfung"
|
||||
it[BewerbeTable.klasse] = "Kl. L"
|
||||
it[BewerbeTable.task] = "DRL 2"
|
||||
it[BewerbeTable.turnierNumber] = turnierNumber2
|
||||
}
|
||||
|
||||
log.info("Dummy tournaments and competitions inserted successfully.")
|
||||
} catch (e: Exception) {
|
||||
log.error("Error checking if tournament table is empty", e)
|
||||
// Don't rethrow, allow the application to continue
|
||||
}
|
||||
}
|
||||
|
||||
@@ -221,26 +254,47 @@ class TurnierRepository {
|
||||
* @return The tournament or null if not found
|
||||
*/
|
||||
fun getTurnierByNumber(number: Int): Turnier? = transaction {
|
||||
// Get the tournament
|
||||
val turnierRow = TurniereTable.selectAll().where { TurniereTable.number eq number }.singleOrNull() ?: return@transaction null
|
||||
log.info("Fetching tournament with number $number")
|
||||
|
||||
val turnier = Turnier(
|
||||
name = turnierRow[TurniereTable.name],
|
||||
datum = turnierRow[TurniereTable.datum],
|
||||
number = turnierRow[TurniereTable.number]
|
||||
)
|
||||
try {
|
||||
// Get the tournament
|
||||
val turnierRow = TurniereTable.selectAll().where { TurniereTable.number eq number }.singleOrNull()
|
||||
|
||||
// Get competitions for this tournament
|
||||
val bewerbeList = BewerbeTable.selectAll().where { BewerbeTable.turnierNumber eq number }.map { row ->
|
||||
Bewerb(
|
||||
nummer = row[BewerbeTable.nummer],
|
||||
titel = row[BewerbeTable.titel],
|
||||
klasse = row[BewerbeTable.klasse],
|
||||
task = row[BewerbeTable.task]
|
||||
if (turnierRow == null) {
|
||||
log.warn("Tournament with number $number not found")
|
||||
return@transaction null
|
||||
}
|
||||
|
||||
log.info("Found tournament with number $number: ${turnierRow[TurniereTable.name]}")
|
||||
|
||||
val turnier = Turnier(
|
||||
name = turnierRow[TurniereTable.name],
|
||||
datum = turnierRow[TurniereTable.datum],
|
||||
number = turnierRow[TurniereTable.number]
|
||||
)
|
||||
}
|
||||
|
||||
turnier.bewerbe = bewerbeList
|
||||
turnier
|
||||
try {
|
||||
// Get competitions for this tournament
|
||||
val bewerbeList = BewerbeTable.selectAll().where { BewerbeTable.turnierNumber eq number }.map { row ->
|
||||
Bewerb(
|
||||
nummer = row[BewerbeTable.nummer],
|
||||
titel = row[BewerbeTable.titel],
|
||||
klasse = row[BewerbeTable.klasse],
|
||||
task = row[BewerbeTable.task]
|
||||
)
|
||||
}
|
||||
|
||||
log.info("Found ${bewerbeList.size} competitions for tournament $number")
|
||||
turnier.bewerbe = bewerbeList
|
||||
} catch (e: Exception) {
|
||||
log.error("Error fetching competitions for tournament $number", e)
|
||||
turnier.bewerbe = emptyList() // Set empty list to avoid null pointer exceptions
|
||||
}
|
||||
|
||||
turnier
|
||||
} catch (e: Exception) {
|
||||
log.error("Error fetching tournament with number $number", e)
|
||||
null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user