export function listOlympiadsQuery(db: GDDB) {
return db
.select({
id: OlympiadTable.id,
slug: OlympiadTable.slug,
year: OlympiadTable.year,
startDate: OlympiadTable.startDate,
endDate: OlympiadTable.endDate,
olympiadType: OlympiadTable.olympiadType,
realOlympiad: OlympiadTable.realOlympiad,
city: {
id: CityTable.id,
name: CityTable.name,
slug: CityTable.slug,
country: {
id: CountryTable.id,
name: CountryTable.name,
slug: CountryTable.slug,
flag: {
id: FlagTable.id,
png: FlagTable.png
}
}
}
})
.from(OlympiadTable)
.innerJoin(CityTable, eq(OlympiadTable.cityId, CityTable.id))
.innerJoin(
OlympiadCountryTable,
and(
eq(OlympiadCountryTable.olympiadId, OlympiadTable.id),
eq(OlympiadCountryTable.countryId, CityTable.countryId)
)
)
.innerJoin(CountryTable, eq(OlympiadCountryTable.countryId, CountryTable.id))
.leftJoin(FlagTable, eq(OlympiadCountryTable.flagId, FlagTable.id))
.where(eq(OlympiadTable.realOlympiad, true))
.orderBy(desc(OlympiadTable.startDate))
.prepare('listOlympiadsQuery');
}
const query = listOlympiadsQuery(db);
const result = await query.execute();
export function listOlympiadsQuery(db: GDDB) {
return db
.select({
id: OlympiadTable.id,
slug: OlympiadTable.slug,
year: OlympiadTable.year,
startDate: OlympiadTable.startDate,
endDate: OlympiadTable.endDate,
olympiadType: OlympiadTable.olympiadType,
realOlympiad: OlympiadTable.realOlympiad,
city: {
id: CityTable.id,
name: CityTable.name,
slug: CityTable.slug,
country: {
id: CountryTable.id,
name: CountryTable.name,
slug: CountryTable.slug,
flag: {
id: FlagTable.id,
png: FlagTable.png
}
}
}
})
.from(OlympiadTable)
.innerJoin(CityTable, eq(OlympiadTable.cityId, CityTable.id))
.innerJoin(
OlympiadCountryTable,
and(
eq(OlympiadCountryTable.olympiadId, OlympiadTable.id),
eq(OlympiadCountryTable.countryId, CityTable.countryId)
)
)
.innerJoin(CountryTable, eq(OlympiadCountryTable.countryId, CountryTable.id))
.leftJoin(FlagTable, eq(OlympiadCountryTable.flagId, FlagTable.id))
.where(eq(OlympiadTable.realOlympiad, true))
.orderBy(desc(OlympiadTable.startDate))
.prepare('listOlympiadsQuery');
}
const query = listOlympiadsQuery(db);
const result = await query.execute();