New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

bun-sqlite-key-value

Package Overview
Dependencies
Maintainers
0
Versions
73
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

bun-sqlite-key-value - npm Package Compare versions

Comparing version 1.10.1 to 1.10.2

4

dist/index.d.ts

@@ -43,3 +43,4 @@ import { Database } from "bun:sqlite";

private renameStatement;
private setTtlStatement;
private setExpiresStatement;
private getExpiresStatement;
constructor(filename?: string, options?: Options);

@@ -97,2 +98,3 @@ deleteExpired(): void;

setTtl(key: string, ttlMs?: number): boolean;
getTtl(key: string): number | undefined;
hSet<T = any>(key: string, field: string, value: T, ttlMs?: number): boolean;

@@ -99,0 +101,0 @@ hGet<T = any>(key: string, field: string): T | undefined;

@@ -31,3 +31,4 @@ // src/index.ts

renameStatement;
setTtlStatement;
setExpiresStatement;
getExpiresStatement;
constructor(filename, options) {

@@ -92,3 +93,4 @@ const {

this.renameStatement = this.db.query("UPDATE items SET key = $newKey WHERE key = $oldKey");
this.setTtlStatement = this.db.query("UPDATE items SET expires = $expires WHERE key = $key");
this.setExpiresStatement = this.db.query("UPDATE items SET expires = $expires WHERE key = $key");
this.getExpiresStatement = this.db.query("SELECT expires FROM items WHERE key = $key");
this.deleteExpired();

@@ -394,4 +396,18 @@ }

}
return this.setTtlStatement.run({ key, expires }).changes === 1;
return this.setExpiresStatement.run({ key, expires }).changes === 1;
}
getTtl(key) {
const record = this.getExpiresStatement.get({ key });
if (!record)
return;
const expires = record?.expires;
if (!expires)
return;
const now = Date.now();
if (expires < now) {
this.delete(key);
return;
}
return expires - now;
}
hSet(key, field, value, ttlMs) {

@@ -398,0 +414,0 @@ return this.db.transaction(() => {

{
"name": "bun-sqlite-key-value",
"version": "1.10.1",
"version": "1.10.2",
"author": {

@@ -5,0 +5,0 @@ "name": "Gerold Penz",

@@ -16,2 +16,27 @@ # Bun SQLite Key Value

## Table of Contents
- [Installation](#installation)
- [Usage](#usage)
- [Open Database](#open-database)
- [Write Value](#write-value)
- [`set()`](#write-value)
- [Read Value](#read-value)
- [`get()`](#read-value)
- [Read Random Value](#read-random-value)
- [`getRandomValue()`](#read-random-value)
- [Write Multiple Items](#write-multiple-items)
- [`setItems()`](#write-multiple-items)
- [Read Values](#read-values)
- [`getValues()`](#read-values)
- [Read Items](#read-items)
- [`getItems()`](#read-items)
- [Multiple Databases](#multiple-databases)
- [Read and Write Binary Files (Images)](#read-and-write-binary-files-images)
- [Cache Values with TTL](#cache-values-with-ttl)
...
## Installation

@@ -166,3 +191,3 @@

## Random Value
## Read Random Value

@@ -204,3 +229,3 @@ ```typescript

## Random Item
## Read Random Item

@@ -242,3 +267,3 @@ ```typescript

## Read Values
## Read Multiple Values

@@ -286,3 +311,3 @@ ```typescript

## Read Items
## Read Multiple Items

@@ -839,3 +864,3 @@ ```typescript

## Renew TTL
## Set TTL (renew)

@@ -878,2 +903,30 @@ ```typescript

## Get TTL
```typescript
getTtl(key: string): number | undefined
```
Returns how long the data record is still valid (in milliseconds).
Returns `undefined` if the `key` does not exist or no expiration date has been set.
Inspired by: https://docs.keydb.dev/docs/commands/#ttl
### key
The key must be a string.
### Example
```typescript
import { BunSqliteKeyValue } from "bun-sqlite-key-value"
const store = new BunSqliteKeyValue()
store.set("my-key", "my-value", 20000)
await Bun.sleep(1)
store.getTtl("my-key") // --> 19999
```
## Hash (Map Object) - Write Value

@@ -880,0 +933,0 @@ ```typescript

@@ -61,3 +61,4 @@ import { Database, type Statement } from "bun:sqlite"

private renameStatement: Statement
private setTtlStatement: Statement
private setExpiresStatement: Statement
private getExpiresStatement: Statement<{expires: number}>

@@ -154,3 +155,4 @@

this.renameStatement = this.db.query("UPDATE items SET key = $newKey WHERE key = $oldKey")
this.setTtlStatement = this.db.query("UPDATE items SET expires = $expires WHERE key = $key")
this.setExpiresStatement = this.db.query("UPDATE items SET expires = $expires WHERE key = $key")
this.getExpiresStatement = this.db.query("SELECT expires FROM items WHERE key = $key")

@@ -621,9 +623,21 @@ // Delete expired items

}
return this.setTtlStatement.run({key, expires}).changes === 1
return this.setExpiresStatement.run({key, expires}).changes === 1
}
// ToDo: ttl() milliseconds like pTtl()
// Returns how long the data record is still valid (in milliseconds).
// Returns `undefined` if the key does not exist.
// Inspired by: https://docs.keydb.dev/docs/commands/#ttl
// Inspired by: https://docs.keydb.dev/docs/commands/#pttl
getTtl(key: string): number | undefined {
const record = this.getExpiresStatement.get({key})
if (!record) return
const expires = record?.expires
if (!expires) return
const now = Date.now()
if (expires < now) {
this.delete(key)
return
}
return expires - now
}

@@ -630,0 +644,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc