File tree Expand file tree Collapse file tree 8 files changed +48
-8
lines changed
Expand file tree Collapse file tree 8 files changed +48
-8
lines changed Original file line number Diff line number Diff line change 3232 run : |
3333 cargo install sqlx-cli
3434 cargo sqlx database create
35- cargo sqlx migrate run
35+ cargo sqlx migrate run --source src/migrations
3636 cargo sqlx prepare
3737
3838 - name : Cache dependencies
@@ -176,13 +176,15 @@ jobs:
176176 bin : InvitationBot
177177 toolchain : beta
178178 cross : false
179+ skip-tests : true
179180
180181 - os-name : Linux-x86_64
181182 runs-on : ubuntu-22.04
182183 target : x86_64-unknown-linux-musl
183184 bin : InvitationBot
184185 toolchain : nightly
185186 cross : false
187+ skip-tests : true
186188
187189 steps :
188190 - uses : actions/checkout@v4
@@ -226,7 +228,7 @@ jobs:
226228 run : |
227229 cargo install sqlx-cli
228230 cargo sqlx database create
229- cargo sqlx migrate run
231+ cargo sqlx migrate run --source src/migrations
230232 cargo sqlx prepare
231233
232234 - name : Cache dependencies
@@ -306,7 +308,7 @@ jobs:
306308
307309 [ -f "${dir}/${CRATE_NAME}" ] && mv "${dir}/${CRATE_NAME}" "release/${dir_name}"
308310 [ -f "${dir}/${CRATE_NAME}.exe" ] && mv "${dir}/${CRATE_NAME}.exe" "release/${dir_name}.exe"
309-
311+
310312 done
311313
312314 ls -la release
Original file line number Diff line number Diff line change @@ -11,7 +11,7 @@ RUN apt-get update && apt-get install -y \
1111ENV DATABASE_URL=sqlite:/tmp/bot.db
1212RUN cargo install sqlx-cli && \
1313 sqlx database create && \
14- sqlx migrate run
14+ sqlx migrate run --source src/migrations
1515
1616RUN cargo build --release
1717
Original file line number Diff line number Diff line change @@ -173,7 +173,6 @@ mod tests {
173173 async fn setup_test_app ( ) -> ( Router , SqlitePool ) {
174174 let db_url = format ! ( "sqlite:file:{}?mode=memory" , Uuid :: new_v4( ) ) ;
175175 let pool = crate :: utils:: db:: create_pool ( & db_url) . await . unwrap ( ) ;
176- sqlx:: migrate!( ) . run ( & pool) . await . unwrap ( ) ;
177176
178177 let config = Arc :: new ( Config {
179178 bot : BotConfig {
Original file line number Diff line number Diff line change @@ -6,6 +6,7 @@ use std::collections::HashMap;
66mod handlers;
77mod http_server;
88mod i18n;
9+ mod migrations;
910mod slash_commands;
1011mod utils;
1112
File renamed without changes.
Original file line number Diff line number Diff line change 1+ use rust_embed:: RustEmbed ;
2+
3+ #[ derive( RustEmbed ) ]
4+ #[ folder = "src/migrations" ]
5+ pub struct Migrations ;
6+
7+ pub fn get_migration ( name : & str ) -> Option < String > {
8+ Migrations :: get ( name) . map ( |f| String :: from_utf8_lossy ( f. data . as_ref ( ) ) . into_owned ( ) )
9+ }
10+
11+ pub fn get_migrations ( ) -> Vec < String > {
12+ Migrations :: iter ( ) . map ( |f| f. to_string ( ) ) . collect ( )
13+ }
14+
15+ #[ cfg( test) ]
16+ mod tests {
17+ use super :: * ;
18+
19+ #[ test]
20+ fn test_get_migration ( ) {
21+ // Test existing migration
22+ let migration = get_migration ( "20240101000000_create_tables.sql" ) . expect ( "Failed to load migration" ) ;
23+ assert ! ( migration. contains( "CREATE TABLE invites" ) ) ;
24+
25+ // Test non-existing migration
26+ assert ! ( get_migration( "invalid.sql" ) . is_none( ) ) ;
27+ }
28+
29+ #[ test]
30+ fn test_get_migrations ( ) {
31+ let migrations = get_migrations ( ) ;
32+ assert ! ( !migrations. is_empty( ) ) ;
33+ assert ! ( migrations. contains( & "20240101000000_create_tables.sql" . to_string( ) ) ) ;
34+ }
35+ }
Original file line number Diff line number Diff line change @@ -2,7 +2,12 @@ use sqlx::types::time::OffsetDateTime;
22type Pool = sqlx:: Pool < sqlx:: Sqlite > ;
33
44pub async fn setup_database ( pool : & Pool ) -> Result < ( ) , sqlx:: Error > {
5- sqlx:: migrate!( ) . run ( pool) . await ?;
5+ let migrations = crate :: migrations:: get_migrations ( ) ;
6+ for migration in migrations {
7+ if let Some ( sql) = crate :: migrations:: get_migration ( migration. as_str ( ) ) {
8+ sqlx:: query ( & sql) . execute ( pool) . await ?;
9+ }
10+ }
611 Ok ( ( ) )
712}
813
@@ -195,7 +200,6 @@ mod tests {
195200 async fn setup_test_db ( ) -> Pool {
196201 let db_url = format ! ( "sqlite:file:{}?mode=memory" , Uuid :: new_v4( ) ) ;
197202 let pool = create_pool ( & db_url) . await . unwrap ( ) ;
198- sqlx:: migrate!( ) . run ( & pool) . await . unwrap ( ) ;
199203 pool
200204 }
201205
Original file line number Diff line number Diff line change @@ -10,7 +10,6 @@ impl TestContext {
1010 pub async fn new ( ) -> Self {
1111 let db_url = format ! ( "sqlite:file:{}?mode=memory" , Uuid :: new_v4( ) ) ;
1212 let pool = crate :: utils:: db:: create_pool ( & db_url) . await . unwrap ( ) ;
13- sqlx:: migrate!( ) . run ( & pool) . await . unwrap ( ) ;
1413
1514 let config = crate :: utils:: config:: Config {
1615 bot : crate :: utils:: config:: BotConfig {
You can’t perform that action at this time.
0 commit comments