/* * This file is part of laurelin/api * Copyright (C) 2023 Jonni Liljamo * * Licensed under GPL-3.0-only. * See LICENSE for licensing information. */ use diesel::{ExpressionMethods, PgConnection, QueryDsl, RunQueryDsl}; use laurelin_schema::schema::games; use laurelin_shared::{ error::api::APIError, types::game::{Game, GAMESTATE_FORMING}, }; pub(crate) fn all_forming(conn: &mut PgConnection) -> Result, APIError> { let games_res = games::table .filter(games::state.eq(GAMESTATE_FORMING)) .load::(conn); let games = match games_res { Err(_) => return Err(APIError::Undefined), // TODO: new error type Ok(games) => games, }; let mut ids = Vec::with_capacity(games.len()); for game in &games { ids.push(game.id.to_string()); } Ok(ids) }