@@ -17,7 +17,9 @@ async fn main() {
1717 . await
1818 . expect ( "Failed to connect to database" ) ;
1919
20- ensure_tables ( & pool) . await . expect ( "Failed to ensure tables" ) ;
20+ zcloudpass_backend:: ensure_tables ( & pool)
21+ . await
22+ . expect ( "Failed to ensure tables" ) ;
2123
2224 let app_state = AppState { db : pool. clone ( ) } ;
2325 let shared_state = Arc :: new ( app_state) ;
@@ -44,51 +46,3 @@ async fn main() {
4446 axum:: serve ( listener, app) . await . unwrap ( ) ;
4547}
4648
47- async fn ensure_tables ( pool : & sqlx:: PgPool ) -> Result < ( ) , sqlx:: Error > {
48- match sqlx:: query ( "CREATE EXTENSION IF NOT EXISTS pgcrypto;" )
49- . execute ( pool)
50- . await
51- {
52- Ok ( _) => println ! ( "pgcrypto extension ensured" ) ,
53- Err ( e) => eprintln ! (
54- "notice: could not create pgcrypto extension (continuing): {:?}. \
55- If you need pgcrypto functionality, create the extension as a superuser.",
56- e
57- ) ,
58- }
59-
60- sqlx:: query (
61- r#"
62- CREATE TABLE IF NOT EXISTS users (
63- id SERIAL PRIMARY KEY,
64- username VARCHAR(255),
65- email VARCHAR(255) UNIQUE NOT NULL,
66- srp_salt TEXT,
67- srp_verifier TEXT,
68- encrypted_vault TEXT,
69- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
70- last_login TIMESTAMP,
71- account_status VARCHAR(20) DEFAULT 'active'
72- )
73- "# ,
74- )
75- . execute ( pool)
76- . await ?;
77-
78- sqlx:: query (
79- r#"
80- CREATE TABLE IF NOT EXISTS sessions (
81- id SERIAL PRIMARY KEY,
82- user_id INT REFERENCES users(id) ON DELETE CASCADE,
83- session_token TEXT UNIQUE NOT NULL,
84- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
85- expires_at TIMESTAMP,
86- last_activity TIMESTAMP DEFAULT CURRENT_TIMESTAMP
87- )
88- "# ,
89- )
90- . execute ( pool)
91- . await ?;
92-
93- Ok ( ( ) )
94- }
0 commit comments