@potonz/shortlinks-manager-cf-d1 0.3.2 → 0.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +6 -0
- package/dist/index.js +2 -2
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -180,6 +180,12 @@ export interface IShortLinksManagerBackend {
|
|
|
180
180
|
* @returns the base URL ID or null if not found
|
|
181
181
|
*/
|
|
182
182
|
getId(baseUrl: string): number | Promise<number>;
|
|
183
|
+
/**
|
|
184
|
+
* Get the base URL for a given ID
|
|
185
|
+
* @param id the ID to get the base URL for
|
|
186
|
+
* @returns the base URL string
|
|
187
|
+
*/
|
|
188
|
+
getById(id: number): string | Promise<string>;
|
|
183
189
|
};
|
|
184
190
|
}
|
|
185
191
|
export interface IShortLinksManagerD1Backend extends IShortLinksManagerBackend {
|
package/dist/index.js
CHANGED
|
@@ -33,7 +33,7 @@ WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
|
|
|
33
33
|
MERCHANTABLITY OR NON-INFRINGEMENT.
|
|
34
34
|
See the Apache Version 2.0 License for specific language governing permissions
|
|
35
35
|
and limitations under the License.
|
|
36
|
-
***************************************************************************** */function
|
|
36
|
+
***************************************************************************** */function Z(D){let H=D.getFullYear(),T=String(D.getMonth()+1).padStart(2,"0"),Y=String(D.getDate()).padStart(2,"0"),j=String(D.getHours()).padStart(2,"0"),w=String(D.getMinutes()).padStart(2,"0"),z=String(D.getSeconds()).padStart(2,"0");return`${H}-${T}-${Y} ${j}:${w}:${z}`}function S(D){let H=null,T=null,Y=null,j=null,w=null,z=null,C=null,E=null,G=null,J=null,K=null,N=null,O=null,P=null,Q=null,V=null;return{async setupTables(){await D.prepare(`
|
|
37
37
|
CREATE TABLE IF NOT EXISTS sl_base_urls (
|
|
38
38
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
39
39
|
base_url TEXT NOT NULL UNIQUE,
|
|
@@ -56,4 +56,4 @@ CREATE INDEX IF NOT EXISTS idx_sl_links_map_base_url_id ON sl_links_map(base_url
|
|
|
56
56
|
CREATE INDEX IF NOT EXISTS idx_sl_links_map_short_id_base_url ON sl_links_map(short_id, base_url_id);
|
|
57
57
|
|
|
58
58
|
PRAGMA optimize;
|
|
59
|
-
`).run()},async getTargetUrl($,
|
|
59
|
+
`).run()},async getTargetUrl($,f){if(!Q)Q=D.prepare("SELECT target_url FROM sl_links_map WHERE short_id = ? AND base_url_id IS NULL LIMIT 1");if(!V)V=D.prepare("SELECT target_url FROM sl_links_map WHERE short_id = ? AND base_url_id = ? LIMIT 1");return(f===null?await Q.bind($).first():await V.bind($,f).first())?.target_url??null},async createShortLink($,f,x){if(!H)H=D.prepare("INSERT INTO sl_links_map (short_id, target_url, base_url_id) VALUES (?, ?, ?)");await H.bind($,f,x).run()},async checkShortIdsExist($,f){let x=Array.from("?".repeat($.length)).join(","),F;if(f===null)F=await D.prepare(`SELECT short_id FROM sl_links_map WHERE short_id IN (${x}) AND base_url_id IS NULL`).bind(...$).all();else F=await D.prepare(`SELECT short_id FROM sl_links_map WHERE short_id IN (${x}) AND base_url_id = ?`).bind(...$,f).all();return F.results.map((X)=>X.short_id)},async updateShortLinkLastAccessTime($,f,x=new Date){if(!T)T=D.prepare("UPDATE sl_links_map SET last_accessed_at = ? WHERE short_id = ? AND base_url_id IS NULL");if(!Y)Y=D.prepare("UPDATE sl_links_map SET last_accessed_at = ? WHERE short_id = ? AND base_url_id = ?");let F=x;if(typeof F==="number")F=new Date(F);if(f===null)await T.bind(Z(F),$).run();else await Y.bind(Z(F),$,f).run()},async cleanUnusedLinks($){if(!j)j=D.prepare("DELETE FROM sl_links_map WHERE last_accessed_at < datetime(CURRENT_TIMESTAMP, ?) RETURNING short_id, base_url_id");return(await j.bind(`-${$} days`).all()).results.map((x)=>({shortId:x.short_id,baseUrlId:x.base_url_id}))},async removeShortLink($,f){if(!w)w=D.prepare("DELETE FROM sl_links_map WHERE short_id = ? AND base_url_id IS NULL");if(!z)z=D.prepare("DELETE FROM sl_links_map WHERE short_id = ? AND base_url_id = ?");if(f===null)await w.bind($).run();else await z.bind($,f).run()},async updateShortLink($,f,x){if(!C)C=D.prepare("UPDATE sl_links_map SET target_url = ? WHERE short_id = ? AND base_url_id IS NULL");if(!E)E=D.prepare("UPDATE sl_links_map SET target_url = ? WHERE short_id = ? AND base_url_id = ?");return(x===null?await C.bind(f,$).run():await E.bind(f,$,x).run()).meta.changes>0},baseUrl:{async add($){if(!G)G=D.prepare("INSERT OR IGNORE INTO sl_base_urls (base_url) VALUES (?)");await G.bind($).run()},async remove($){if(!J)J=D.prepare("UPDATE sl_base_urls SET is_active = 0 WHERE id = ?");await J.bind($).run()},async list($){if(!K)K=D.prepare("SELECT id, base_url, is_active FROM sl_base_urls WHERE is_active = 1");if(!N)N=D.prepare("SELECT id, base_url, is_active FROM sl_base_urls WHERE 1=1");let f;if($)f=await N.all();else f=await K.all();return f.results.map((x)=>({id:x.id,baseUrl:x.base_url,isActive:x.is_active===1}))},async getId($){if(!O)O=D.prepare("SELECT id FROM sl_base_urls WHERE base_url = ? LIMIT 1");let f=await O.bind($).first();if(!f)throw Error(`Base URL not found: ${$}`);return f.id},async getById($){if(!P)P=D.prepare("SELECT base_url FROM sl_base_urls WHERE id = ? LIMIT 1");let f=await P.bind($).first();if(!f)throw Error(`Base URL ID not found: ${$}`);return f.base_url}}}}var q={};export{q as default,S as createD1Backend};
|