migration/
m20251124_00003_tickets_create_ticket.rs1use sea_orm_migration::prelude::*;
2
3#[derive(DeriveMigrationName)]
4pub struct Migration;
5
6#[async_trait::async_trait]
7impl MigrationTrait for Migration {
8 async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> {
9 manager
10 .create_table(
11 Table::create()
12 .table(Ticket::Table)
13 .if_not_exists()
14 .col(
15 ColumnDef::new(Ticket::Id)
16 .integer()
17 .not_null()
18 .auto_increment()
19 .primary_key(),
20 )
21 .col(ColumnDef::new(Ticket::ChannelId).string_len(64).not_null())
22 .col(ColumnDef::new(Ticket::Counterparty).string_len(40).not_null())
23 .col(ColumnDef::new(Ticket::Amount).binary_len(12).not_null())
24 .col(ColumnDef::new(Ticket::Index).binary_len(8).not_null())
25 .col(ColumnDef::new(Ticket::WinningProbability).binary_len(7).not_null())
26 .col(ColumnDef::new(Ticket::ChannelEpoch).binary_len(4).not_null())
27 .col(ColumnDef::new(Ticket::Signature).binary_len(64).not_null())
28 .col(ColumnDef::new(Ticket::Response).binary_len(32).not_null())
29 .col(ColumnDef::new(Ticket::State).tiny_unsigned().not_null().default(0))
30 .col(ColumnDef::new(Ticket::Hash).binary_len(32).not_null())
31 .col(ColumnDef::new(Ticket::VrfParams).binary_len(97).not_null())
32 .col(ColumnDef::new(Ticket::ChannelDst).binary_len(32).not_null())
33 .to_owned(),
34 )
35 .await?;
36
37 manager
38 .create_index(
39 Index::create()
40 .name("idx_ticket_channel")
41 .if_not_exists()
42 .table(Ticket::Table)
43 .col(Ticket::ChannelId)
44 .col(Ticket::ChannelEpoch)
45 .to_owned(),
46 )
47 .await?;
48
49 manager
50 .create_index(
51 Index::create()
52 .name("idx_ticket_counterparty")
53 .if_not_exists()
54 .table(Ticket::Table)
55 .col(Ticket::Counterparty)
56 .to_owned(),
57 )
58 .await?;
59
60 manager
61 .create_index(
62 Index::create()
63 .name("idx_ticket_channel_id_epoch_index")
64 .if_not_exists()
65 .table(Ticket::Table)
66 .col(Ticket::ChannelId)
67 .col(Ticket::ChannelEpoch)
68 .col(Ticket::Index)
69 .unique()
70 .to_owned(),
71 )
72 .await
73 }
74
75 async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
76 manager
77 .drop_index(Index::drop().name("idx_ticket_channel_id_epoch_index").to_owned())
78 .await?;
79
80 manager
81 .drop_index(Index::drop().name("idx_ticket_counterparty").to_owned())
82 .await?;
83
84 manager
85 .drop_index(Index::drop().name("idx_ticket_channel").to_owned())
86 .await?;
87
88 manager.drop_table(Table::drop().table(Ticket::Table).to_owned()).await
89 }
90}
91
92#[derive(DeriveIden)]
93enum Ticket {
94 Table,
95 Id,
96 ChannelId,
97 Counterparty,
98 Amount,
99 Index,
100 WinningProbability,
101 ChannelEpoch,
102 Signature,
103 Response,
104 State,
105 Hash,
106 VrfParams,
107 ChannelDst,
108}