sway_groups_core/db/entities/
group_state.rs1use sea_orm::entity::prelude::*;
4
5#[sea_orm::model]
6#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)]
7#[sea_orm(table_name = "group_state")]
8pub struct Model {
9 #[sea_orm(primary_key, auto_increment = true)]
10 pub id: i32,
11 pub output: String,
12 pub group_name: String,
13 pub last_focused_workspace: Option<String>,
14 pub last_visited: Option<DateTime>,
15}
16
17impl ActiveModelBehavior for ActiveModel {}
18
19impl Entity {
20 pub fn find_by_output_and_group(output: &str, group_name: &str) -> Select<Self> {
21 use sea_orm::{ColumnTrait, QueryFilter};
22 Self::find()
23 .filter(Column::Output.eq(output))
24 .filter(Column::GroupName.eq(group_name))
25 }
26
27 pub fn find_by_group_name(group_name: &str) -> Select<Self> {
28 use sea_orm::{ColumnTrait, QueryFilter};
29 Self::find()
30 .filter(Column::GroupName.eq(group_name))
31 }
32
33 pub fn find_by_last_focused_workspace(workspace_name: &str) -> Select<Self> {
34 use sea_orm::{ColumnTrait, QueryFilter};
35 Self::find()
36 .filter(Column::LastFocusedWorkspace.eq(workspace_name))
37 }
38
39 pub fn find_last_visited_output_for_group(group_name: &str) -> Select<Self> {
40 use sea_orm::{ColumnTrait, Order, QueryFilter, QueryOrder};
41 Self::find()
42 .filter(Column::GroupName.eq(group_name))
43 .order_by(Column::LastVisited, Order::Desc)
44 }
45}