Skip to content

Commit 8152bbe

Browse files
committed
Add num_idle, size
1 parent 06e9566 commit 8152bbe

File tree

8 files changed

+63
-4
lines changed

8 files changed

+63
-4
lines changed

__tests__/sql/index.test.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ describe.sequential('sqlite', async () => {
2222
const pool = await createSqliteConnection({
2323
url: 'sqlite:./__tests__/sql/test.db',
2424
revisionPath: './__tests__/sql/test-index-revisions',
25+
maxConnections: 5,
26+
minConnections: 2,
2527
})
2628
it.each([
2729
['SELECT 1 as value', { value: 1 }],
@@ -31,7 +33,7 @@ describe.sequential('sqlite', async () => {
3133
['SELECT FALSE as value', { value: 0 }],
3234
['SELECT 1.1 as value', { value: 1.1 }],
3335
])('should select one row', async (sql, expected) => {
34-
expect(await pool.fetchOne(sql)).toEqual(expected)
36+
await expect(pool.fetchOne(sql)).resolves.toEqual(expected)
3537
})
3638
it.each([
3739
['SELECT 1 as value', [{ value: 1 }]],
@@ -41,7 +43,7 @@ describe.sequential('sqlite', async () => {
4143
['SELECT FALSE as value', [{ value: 0 }]],
4244
['SELECT 1.1 as value', [{ value: 1.1 }]],
4345
])('should select all', async (sql, expected) => {
44-
expect(await pool.fetchAll(sql)).toEqual(expected)
46+
await expect(pool.fetchAll(sql)).resolves.toEqual(expected)
4547
})
4648
it.each([
4749
['SELECT NULL as value', { value: null }],
@@ -50,7 +52,7 @@ describe.sequential('sqlite', async () => {
5052
['SELECT FALSE as value', { value: 0 }],
5153
['SELECT 1.1 as value', { value: 1.1 }],
5254
])('should select optional', async (sql, expected) => {
53-
expect(await pool.fetchOptional(sql)).toEqual(expected)
55+
await expect(pool.fetchOptional(sql)).resolves.toEqual(expected)
5456
})
5557
describe('model', () => {
5658
it('test', async () => {

sql/core/database_strategy/src/lib.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,9 @@ pub trait DatabaseStrategy: Send + Sync {
7373
async fn commit(&self, tx: &mut DatabaseTransaction) -> Result<(), Error>;
7474
async fn rollback(&self, tx: &mut DatabaseTransaction) -> Result<(), Error>;
7575

76+
fn num_idle(&self) -> Result<usize, Error>;
77+
fn size(&self) -> Result<u32, Error>;
78+
7679
fn get_query_params(&self) -> QueryParams;
7780
fn get_auto_increment_sql(&self) -> Option<String>;
7881
fn get_default_function_sql(&self, default: &str) -> String;

sql/core/database_strategy_mysql/src/lib.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,16 @@ impl DatabaseStrategy for MysqlDatabaseStrategy {
190190
}
191191
}
192192

193+
fn num_idle(&self) -> Result<usize, Error> {
194+
let pool = self.pool.as_ref().ok_or(Error::PoolClosed)?;
195+
Ok(pool.num_idle())
196+
}
197+
198+
fn size(&self) -> Result<u32, Error> {
199+
let pool = self.pool.as_ref().ok_or(Error::PoolClosed)?;
200+
Ok(pool.size())
201+
}
202+
193203
/// check to exists devup_revisions table
194204
async fn has_revision(&self) -> Result<bool, Error> {
195205
Ok(self.fetch_one("SELECT COUNT(*) as count FROM information_schema.tables WHERE table_name = 'devup_revision'", &[], None).await?.as_u64().unwrap_or(0) > 0)

sql/core/database_strategy_postgres/src/lib.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,17 @@ impl DatabaseStrategy for PostgresDatabaseStrategy {
189189
_ => Err(Error::BeginFailed),
190190
}
191191
}
192+
193+
fn num_idle(&self) -> Result<usize, Error> {
194+
let pool = self.pool.as_ref().ok_or(Error::PoolClosed)?;
195+
Ok(pool.num_idle())
196+
}
197+
198+
fn size(&self) -> Result<u32, Error> {
199+
let pool = self.pool.as_ref().ok_or(Error::PoolClosed)?;
200+
Ok(pool.size())
201+
}
202+
192203
/// check to exists devup_revisions table
193204
async fn has_revision(&self) -> Result<bool, Error> {
194205
Ok(self.fetch_one("SELECT COUNT(*) as count FROM information_schema.tables WHERE table_name = 'devup_revision'", &[],None).await?.as_u64().unwrap_or(0) > 0)

sql/core/database_strategy_sqlite/src/lib.rs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,8 +205,18 @@ impl DatabaseStrategy for SqliteDatabaseStrategy {
205205
_ => Err(Error::BeginFailed),
206206
}
207207
}
208+
209+
fn num_idle(&self) -> Result<usize, Error> {
210+
let pool = self.pool.as_ref().ok_or(Error::PoolClosed)?;
211+
Ok(pool.num_idle())
212+
}
213+
214+
fn size(&self) -> Result<u32, Error> {
215+
let pool = self.pool.as_ref().ok_or(Error::PoolClosed)?;
216+
Ok(pool.size())
217+
}
218+
208219
/// check to exists devup_revisions table
209-
///
210220
async fn has_revision(&self) -> Result<bool, Error> {
211221
Ok(self.fetch_one("SELECT COUNT(*) as count FROM sqlite_master WHERE type = 'table' AND name = 'devup_revision'", &[],None).await?.as_u64().unwrap_or(0) > 0)
212222
}

sql/core/devup_database/src/lib.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,14 @@ impl DevupSqlPool {
277277
Ok(())
278278
}
279279

280+
pub fn num_idle(&self) -> Result<usize, Error> {
281+
self.options.database_strategy.num_idle()
282+
}
283+
284+
pub fn size(&self) -> Result<u32, Error> {
285+
self.options.database_strategy.size()
286+
}
287+
280288
pub async fn save(
281289
&self,
282290
obj: &Value,

sql/libs/node/pool/src/lib.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,19 @@ impl DevupNodeSqlPool {
237237
.map_err(to_napi_error)
238238
}
239239

240+
#[napi]
241+
pub fn num_idle(&self) -> napi::Result<i32> {
242+
self.inner
243+
.num_idle()
244+
.map(|v| v as i32)
245+
.map_err(to_napi_error)
246+
}
247+
248+
#[napi]
249+
pub fn size(&self) -> napi::Result<u32> {
250+
self.inner.size().map_err(to_napi_error)
251+
}
252+
240253
#[napi]
241254
pub async fn save(
242255
&self,

sql/libs/node/sqlite/index.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@ export declare class DevupNodeSqlPool {
8181
setupRevision(): Promise<void>
8282
commit(tx: DevupNodeSqlTransaction): Promise<void>
8383
rollback(tx: DevupNodeSqlTransaction): Promise<void>
84+
numIdle(): number
85+
size(): number
8486
save(obj: any, tx?: DevupNodeSqlTransaction | undefined | null): Promise<any>
8587
delete(obj: any, tx?: DevupNodeSqlTransaction | undefined | null): Promise<void>
8688
find(modelName: string, tx?: DevupNodeSqlTransaction | undefined | null): Promise<Array<any>>

0 commit comments

Comments
 (0)