@@ -3,7 +3,7 @@ mod schema;
33
44use crate :: {
55 config:: TandemConfig ,
6- eql,
6+ connect , eql,
77 error:: { EncryptError , Error } ,
88 log:: ENCRYPT ,
99 postgresql:: Column ,
@@ -22,7 +22,7 @@ use cipherstash_config::ColumnConfig;
2222use config:: EncryptConfigManager ;
2323use schema:: SchemaManager ;
2424use std:: { sync:: Arc , vec} ;
25- use tracing:: debug;
25+ use tracing:: { debug, warn } ;
2626
2727/// SQL Statement for loading encrypt configuration from database
2828const ENCRYPT_CONFIG_QUERY : & str = include_str ! ( "./sql/select_config.sql" ) ;
@@ -44,6 +44,8 @@ pub struct Encrypt {
4444 cipher : Arc < ScopedCipher > ,
4545 pub encrypt_config : EncryptConfigManager ,
4646 pub schema : SchemaManager ,
47+ /// The EQL version installed in the database or `None` if it was not present
48+ pub eql_version : Option < String > ,
4749}
4850
4951impl Encrypt {
@@ -52,11 +54,28 @@ impl Encrypt {
5254 let schema = SchemaManager :: init ( & config. database ) . await ?;
5355 let encrypt_config = EncryptConfigManager :: init ( & config. database ) . await ?;
5456
57+ let eql_version = {
58+ let client = connect:: database ( & config. database ) . await ?;
59+ let rows = client. query ( "SELECT cs_eql_version();" , & [ ] ) . await ;
60+
61+ match rows {
62+ Ok ( rows) => rows. first ( ) . map ( |row| row. get ( "cs_eql_version" ) ) ,
63+ Err ( err) => {
64+ warn ! (
65+ msg = "Could not query EQL version from database" ,
66+ error = err. to_string( )
67+ ) ;
68+ None
69+ }
70+ }
71+ } ;
72+
5573 Ok ( Encrypt {
5674 config,
5775 cipher,
5876 encrypt_config,
5977 schema,
78+ eql_version,
6079 } )
6180 }
6281
0 commit comments