Incomplete progress, transition toward postgres
This commit is contained in:
parent
292d3d3e7d
commit
2f54d41625
8 changed files with 171 additions and 41 deletions
|
@ -1,13 +1,14 @@
|
||||||
{
|
{
|
||||||
"imports": {
|
"imports": {
|
||||||
"@@npm/ioredis": "npm:ioredis@^5.4.1",
|
"@@npm/ioredis": "npm:ioredis@^5.4.1",
|
||||||
|
"@@x/escape": "https://deno.land/x/escape@1.3.0/mod.ts",
|
||||||
"@fedify/fedify": "jsr:@fedify/fedify@^1.0.2",
|
"@fedify/fedify": "jsr:@fedify/fedify@^1.0.2",
|
||||||
"@fedify/redis": "jsr:@fedify/redis@^0.3.0",
|
"@fedify/postgres": "jsr:@fedify/postgres@^0.1.0",
|
||||||
"@hongminhee/x-forwarded-fetch": "jsr:@hongminhee/x-forwarded-fetch@^0.2.0",
|
"@hongminhee/x-forwarded-fetch": "jsr:@hongminhee/x-forwarded-fetch@^0.2.0",
|
||||||
"@logtape/logtape": "jsr:@logtape/logtape@^0.6.3",
|
"@logtape/logtape": "jsr:@logtape/logtape@^0.6.3",
|
||||||
"@opentelemetry/api": "npm:@opentelemetry/api@^1.9.0",
|
"@opentelemetry/api": "npm:@opentelemetry/api@^1.9.0",
|
||||||
"@std/assert": "jsr:@std/assert@1",
|
"@std/assert": "jsr:@std/assert@1",
|
||||||
"@@x/escape": "https://deno.land/x/escape@1.3.0/mod.ts"
|
"@@npm/postgres": "npm:postgres@^3.4.4"
|
||||||
},
|
},
|
||||||
"unstable": [
|
"unstable": [
|
||||||
"temporal"
|
"temporal"
|
||||||
|
|
127
deno.lock
127
deno.lock
|
@ -4,7 +4,7 @@
|
||||||
"specifiers": {
|
"specifiers": {
|
||||||
"jsr:@fedify/fedify@^1.0.0": "jsr:@fedify/fedify@1.0.2",
|
"jsr:@fedify/fedify@^1.0.0": "jsr:@fedify/fedify@1.0.2",
|
||||||
"jsr:@fedify/fedify@^1.0.2": "jsr:@fedify/fedify@1.0.2",
|
"jsr:@fedify/fedify@^1.0.2": "jsr:@fedify/fedify@1.0.2",
|
||||||
"jsr:@fedify/redis@^0.3.0": "jsr:@fedify/redis@0.3.0",
|
"jsr:@fedify/postgres@^0.1.0": "jsr:@fedify/postgres@0.1.0",
|
||||||
"jsr:@hongminhee/x-forwarded-fetch@^0.2.0": "jsr:@hongminhee/x-forwarded-fetch@0.2.0",
|
"jsr:@hongminhee/x-forwarded-fetch@^0.2.0": "jsr:@hongminhee/x-forwarded-fetch@0.2.0",
|
||||||
"jsr:@hugoalh/http-header-link@^1.0.2": "jsr:@hugoalh/http-header-link@1.0.2",
|
"jsr:@hugoalh/http-header-link@^1.0.2": "jsr:@hugoalh/http-header-link@1.0.2",
|
||||||
"jsr:@hugoalh/is-string-singleline@1.0.2": "jsr:@hugoalh/is-string-singleline@1.0.2",
|
"jsr:@hugoalh/is-string-singleline@1.0.2": "jsr:@hugoalh/is-string-singleline@1.0.2",
|
||||||
|
@ -20,12 +20,14 @@
|
||||||
"npm:@phensley/language-tag@^1.9.0": "npm:@phensley/language-tag@1.9.0",
|
"npm:@phensley/language-tag@^1.9.0": "npm:@phensley/language-tag@1.9.0",
|
||||||
"npm:@types/node": "npm:@types/node@18.16.19",
|
"npm:@types/node": "npm:@types/node@18.16.19",
|
||||||
"npm:asn1js@^3.0.5": "npm:asn1js@3.0.5",
|
"npm:asn1js@^3.0.5": "npm:asn1js@3.0.5",
|
||||||
|
"npm:graffle@next": "npm:graffle@8.0.0-next.68_@opentelemetry+api@1.9.0_graphql@16.9.0",
|
||||||
"npm:ioredis@^5.4.1": "npm:ioredis@5.4.1",
|
"npm:ioredis@^5.4.1": "npm:ioredis@5.4.1",
|
||||||
"npm:json-canon@^1.0.1": "npm:json-canon@1.0.1",
|
"npm:json-canon@^1.0.1": "npm:json-canon@1.0.1",
|
||||||
"npm:jsonld@^8.3.2": "npm:jsonld@8.3.2",
|
"npm:jsonld@^8.3.2": "npm:jsonld@8.3.2",
|
||||||
"npm:multibase@^4.0.6": "npm:multibase@4.0.6",
|
"npm:multibase@^4.0.6": "npm:multibase@4.0.6",
|
||||||
"npm:multicodec@^3.2.1": "npm:multicodec@3.2.1",
|
"npm:multicodec@^3.2.1": "npm:multicodec@3.2.1",
|
||||||
"npm:pkijs@^3.2.4": "npm:pkijs@3.2.4",
|
"npm:pkijs@^3.2.4": "npm:pkijs@3.2.4",
|
||||||
|
"npm:postgres@^3.4.4": "npm:postgres@3.4.4",
|
||||||
"npm:uri-template-router@^0.0.16": "npm:uri-template-router@0.0.16",
|
"npm:uri-template-router@^0.0.16": "npm:uri-template-router@0.0.16",
|
||||||
"npm:url-template@^3.1.1": "npm:url-template@3.1.1"
|
"npm:url-template@^3.1.1": "npm:url-template@3.1.1"
|
||||||
},
|
},
|
||||||
|
@ -50,12 +52,11 @@
|
||||||
"npm:url-template@^3.1.1"
|
"npm:url-template@^3.1.1"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"@fedify/redis@0.3.0": {
|
"@fedify/postgres@0.1.0": {
|
||||||
"integrity": "48068af7ad24d4f6c6935d6f869659faeb92281a9e796921f9ba7d94e74f8cfc",
|
"integrity": "350e3e535372d84acebe7392ae98495e388f30d75165d52c6d32a8dc6e940b80",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"jsr:@fedify/fedify@^1.0.0",
|
"jsr:@fedify/fedify@^1.0.0",
|
||||||
"jsr:@logtape/logtape@^0.6.3",
|
"npm:postgres@^3.4.4"
|
||||||
"npm:ioredis@^5.4.1"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"@hongminhee/x-forwarded-fetch@0.2.0": {
|
"@hongminhee/x-forwarded-fetch@0.2.0": {
|
||||||
|
@ -108,10 +109,38 @@
|
||||||
"integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==",
|
"integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==",
|
||||||
"dependencies": {}
|
"dependencies": {}
|
||||||
},
|
},
|
||||||
|
"@graphql-typed-document-node/core@3.2.0_graphql@16.9.0": {
|
||||||
|
"integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"graphql": "graphql@16.9.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"@ioredis/commands@1.2.0": {
|
"@ioredis/commands@1.2.0": {
|
||||||
"integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==",
|
"integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==",
|
||||||
"dependencies": {}
|
"dependencies": {}
|
||||||
},
|
},
|
||||||
|
"@molt/command@0.9.0": {
|
||||||
|
"integrity": "sha512-1JI8dAlpqlZoXyKWVQggX7geFNPxBpocHIXQCsnxDjKy+3WX4SGyZVJXuLlqRRrX7FmQCuuMAfx642ovXmPA9g==",
|
||||||
|
"dependencies": {
|
||||||
|
"@molt/types": "@molt/types@0.2.0",
|
||||||
|
"alge": "alge@0.8.1",
|
||||||
|
"chalk": "chalk@5.3.0",
|
||||||
|
"lodash.camelcase": "lodash.camelcase@4.3.0",
|
||||||
|
"lodash.snakecase": "lodash.snakecase@4.1.1",
|
||||||
|
"readline-sync": "readline-sync@1.4.10",
|
||||||
|
"string-length": "string-length@6.0.0",
|
||||||
|
"strip-ansi": "strip-ansi@7.1.0",
|
||||||
|
"ts-toolbelt": "ts-toolbelt@9.6.0",
|
||||||
|
"type-fest": "type-fest@4.26.1",
|
||||||
|
"zod": "zod@3.23.8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@molt/types@0.2.0": {
|
||||||
|
"integrity": "sha512-p6ChnEZDGjg9PYPec9BK6Yp5/DdSrYQvXTBAtgrnqX6N36cZy37ql1c8Tc5LclfIYBNG7EZp8NBcRTYJwyi84g==",
|
||||||
|
"dependencies": {
|
||||||
|
"ts-toolbelt": "ts-toolbelt@9.6.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"@multiformats/base-x@4.0.1": {
|
"@multiformats/base-x@4.0.1": {
|
||||||
"integrity": "sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw==",
|
"integrity": "sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw==",
|
||||||
"dependencies": {}
|
"dependencies": {}
|
||||||
|
@ -140,6 +169,19 @@
|
||||||
"event-target-shim": "event-target-shim@5.0.1"
|
"event-target-shim": "event-target-shim@5.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"alge@0.8.1": {
|
||||||
|
"integrity": "sha512-kiV9nTt+XIauAXsowVygDxMZLplZxDWt0W8plE/nB32/V2ziM/P/TxDbSVK7FYIUt2Xo16h3/htDh199LNPCKQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"lodash.ismatch": "lodash.ismatch@4.4.0",
|
||||||
|
"remeda": "remeda@1.61.0",
|
||||||
|
"ts-toolbelt": "ts-toolbelt@9.6.0",
|
||||||
|
"zod": "zod@3.23.8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ansi-regex@6.1.0": {
|
||||||
|
"integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
"asn1js@3.0.5": {
|
"asn1js@3.0.5": {
|
||||||
"integrity": "sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==",
|
"integrity": "sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -156,6 +198,10 @@
|
||||||
"integrity": "sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==",
|
"integrity": "sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==",
|
||||||
"dependencies": {}
|
"dependencies": {}
|
||||||
},
|
},
|
||||||
|
"chalk@5.3.0": {
|
||||||
|
"integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
"cluster-key-slot@1.1.2": {
|
"cluster-key-slot@1.1.2": {
|
||||||
"integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==",
|
"integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==",
|
||||||
"dependencies": {}
|
"dependencies": {}
|
||||||
|
@ -191,6 +237,20 @@
|
||||||
"fetch-blob": "fetch-blob@3.2.0"
|
"fetch-blob": "fetch-blob@3.2.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"graffle@8.0.0-next.68_@opentelemetry+api@1.9.0_graphql@16.9.0": {
|
||||||
|
"integrity": "sha512-oaigY1yEX48cUSiFJKtigjGw4ooA7JtLwafSUQuuAgbl0qtnaSmAGrfSRpb9RhxF0y/HEzJNEMYUaea085cn8w==",
|
||||||
|
"dependencies": {
|
||||||
|
"@graphql-typed-document-node/core": "@graphql-typed-document-node/core@3.2.0_graphql@16.9.0",
|
||||||
|
"@molt/command": "@molt/command@0.9.0",
|
||||||
|
"@opentelemetry/api": "@opentelemetry/api@1.9.0",
|
||||||
|
"graphql": "graphql@16.9.0",
|
||||||
|
"is-plain-obj": "is-plain-obj@4.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"graphql@16.9.0": {
|
||||||
|
"integrity": "sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
"ioredis@5.4.1": {
|
"ioredis@5.4.1": {
|
||||||
"integrity": "sha512-2YZsvl7jopIa1gaePkeMtd9rAcSjOOjPtpcLlOeusyO+XH2SK5ZcT+UCrElPP+WVIInh2TzeI4XW9ENaSLVVHA==",
|
"integrity": "sha512-2YZsvl7jopIa1gaePkeMtd9rAcSjOOjPtpcLlOeusyO+XH2SK5ZcT+UCrElPP+WVIInh2TzeI4XW9ENaSLVVHA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -205,6 +265,10 @@
|
||||||
"standard-as-callback": "standard-as-callback@2.1.0"
|
"standard-as-callback": "standard-as-callback@2.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"is-plain-obj@4.1.0": {
|
||||||
|
"integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
"json-canon@1.0.1": {
|
"json-canon@1.0.1": {
|
||||||
"integrity": "sha512-PQcj4PFOTAQxE8PgoQ4KrM0DcKWZd7S3ELOON8rmysl9I8JuFMgxu1H9v+oZsTPjjkpeS3IHPwLjr7d+gKygnw==",
|
"integrity": "sha512-PQcj4PFOTAQxE8PgoQ4KrM0DcKWZd7S3ELOON8rmysl9I8JuFMgxu1H9v+oZsTPjjkpeS3IHPwLjr7d+gKygnw==",
|
||||||
"dependencies": {}
|
"dependencies": {}
|
||||||
|
@ -230,6 +294,10 @@
|
||||||
"integrity": "sha512-CasD9OCEQSFIam2U8efFK81Yeg8vNMTBUqtMOHlrcWQHqUX3HeCl9Dr31u4toV7emlH8Mymk5+9p0lL6mKb/Xw==",
|
"integrity": "sha512-CasD9OCEQSFIam2U8efFK81Yeg8vNMTBUqtMOHlrcWQHqUX3HeCl9Dr31u4toV7emlH8Mymk5+9p0lL6mKb/Xw==",
|
||||||
"dependencies": {}
|
"dependencies": {}
|
||||||
},
|
},
|
||||||
|
"lodash.camelcase@4.3.0": {
|
||||||
|
"integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
"lodash.defaults@4.2.0": {
|
"lodash.defaults@4.2.0": {
|
||||||
"integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==",
|
"integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==",
|
||||||
"dependencies": {}
|
"dependencies": {}
|
||||||
|
@ -238,6 +306,14 @@
|
||||||
"integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==",
|
"integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==",
|
||||||
"dependencies": {}
|
"dependencies": {}
|
||||||
},
|
},
|
||||||
|
"lodash.ismatch@4.4.0": {
|
||||||
|
"integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"lodash.snakecase@4.1.1": {
|
||||||
|
"integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
"lru-cache@6.0.0": {
|
"lru-cache@6.0.0": {
|
||||||
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
|
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -288,6 +364,10 @@
|
||||||
"tslib": "tslib@2.7.0"
|
"tslib": "tslib@2.7.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"postgres@3.4.4": {
|
||||||
|
"integrity": "sha512-IbyN+9KslkqcXa8AO9fxpk97PA4pzewvpi2B3Dwy9u4zpV32QicaEdgmF3eSQUzdRk7ttDHQejNgAEr4XoeH4A==",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
"pvtsutils@1.3.5": {
|
"pvtsutils@1.3.5": {
|
||||||
"integrity": "sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA==",
|
"integrity": "sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -304,6 +384,10 @@
|
||||||
"setimmediate": "setimmediate@1.0.5"
|
"setimmediate": "setimmediate@1.0.5"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"readline-sync@1.4.10": {
|
||||||
|
"integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
"redis-errors@1.2.0": {
|
"redis-errors@1.2.0": {
|
||||||
"integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==",
|
"integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==",
|
||||||
"dependencies": {}
|
"dependencies": {}
|
||||||
|
@ -314,6 +398,10 @@
|
||||||
"redis-errors": "redis-errors@1.2.0"
|
"redis-errors": "redis-errors@1.2.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"remeda@1.61.0": {
|
||||||
|
"integrity": "sha512-caKfSz9rDeSKBQQnlJnVW3mbVdFgxgGWQKq1XlFokqjf+hQD5gxutLGTTY2A/x24UxVyJe9gH5fAkFI63ULw4A==",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
"setimmediate@1.0.5": {
|
"setimmediate@1.0.5": {
|
||||||
"integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
|
"integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
|
||||||
"dependencies": {}
|
"dependencies": {}
|
||||||
|
@ -322,10 +410,30 @@
|
||||||
"integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==",
|
"integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==",
|
||||||
"dependencies": {}
|
"dependencies": {}
|
||||||
},
|
},
|
||||||
|
"string-length@6.0.0": {
|
||||||
|
"integrity": "sha512-1U361pxZHEQ+FeSjzqRpV+cu2vTzYeWeafXFLykiFlv4Vc0n3njgU8HrMbyik5uwm77naWMuVG8fhEF+Ovb1Kg==",
|
||||||
|
"dependencies": {
|
||||||
|
"strip-ansi": "strip-ansi@7.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"strip-ansi@7.1.0": {
|
||||||
|
"integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"ansi-regex": "ansi-regex@6.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ts-toolbelt@9.6.0": {
|
||||||
|
"integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
"tslib@2.7.0": {
|
"tslib@2.7.0": {
|
||||||
"integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==",
|
"integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==",
|
||||||
"dependencies": {}
|
"dependencies": {}
|
||||||
},
|
},
|
||||||
|
"type-fest@4.26.1": {
|
||||||
|
"integrity": "sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
"uint8arrays@3.1.1": {
|
"uint8arrays@3.1.1": {
|
||||||
"integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==",
|
"integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -357,6 +465,10 @@
|
||||||
"yallist@4.0.0": {
|
"yallist@4.0.0": {
|
||||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
|
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
|
||||||
"dependencies": {}
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"zod@3.23.8": {
|
||||||
|
"integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==",
|
||||||
|
"dependencies": {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -508,12 +620,13 @@
|
||||||
"workspace": {
|
"workspace": {
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"jsr:@fedify/fedify@^1.0.2",
|
"jsr:@fedify/fedify@^1.0.2",
|
||||||
"jsr:@fedify/redis@^0.3.0",
|
"jsr:@fedify/postgres@^0.1.0",
|
||||||
"jsr:@hongminhee/x-forwarded-fetch@^0.2.0",
|
"jsr:@hongminhee/x-forwarded-fetch@^0.2.0",
|
||||||
"jsr:@logtape/logtape@^0.6.3",
|
"jsr:@logtape/logtape@^0.6.3",
|
||||||
"jsr:@std/assert@1",
|
"jsr:@std/assert@1",
|
||||||
"npm:@opentelemetry/api@^1.9.0",
|
"npm:@opentelemetry/api@^1.9.0",
|
||||||
"npm:ioredis@^5.4.1"
|
"npm:ioredis@^5.4.1",
|
||||||
|
"npm:postgres@^3.4.4"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
12
src/database/kv.ts
Normal file
12
src/database/kv.ts
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
import { PostgresKvStore } from "@fedify/postgres/kv"
|
||||||
|
import { getLogger } from "@logtape/logtape"
|
||||||
|
import Postgres from "@@npm/postgres"
|
||||||
|
|
||||||
|
|
||||||
|
const l = getLogger(["dotino-veloce", "fedify", "kv"])
|
||||||
|
|
||||||
|
|
||||||
|
export function createPostgresKvStore(postgres: Postgres.Sql): PostgresKvStore {
|
||||||
|
l.info`Creating Postgres key-value store...`
|
||||||
|
return new PostgresKvStore(postgres, {})
|
||||||
|
}
|
22
src/database/postgres.ts
Normal file
22
src/database/postgres.ts
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
import Postgres from "@@npm/postgres"
|
||||||
|
import { getLogger } from "@logtape/logtape"
|
||||||
|
|
||||||
|
|
||||||
|
const l = getLogger(["dotino-veloce", "fedify", "postgres"])
|
||||||
|
|
||||||
|
|
||||||
|
export function createPostgres(connString: string): Postgres.Sql {
|
||||||
|
l.info`Creating Postgres object with string: ${connString}`
|
||||||
|
return Postgres(connString)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function createPostgresFromEnv(): Postgres.Sql {
|
||||||
|
l.debug`Getting connection string from environment variable DOTINO_POSTGRES_STRING...`
|
||||||
|
const connString = Deno.env.get("DOTINO_POSTGRES_STRING")
|
||||||
|
if(!connString) {
|
||||||
|
l.error`DOTINO_POSTGRES_STRING is unset.`
|
||||||
|
throw new Error("DOTINO_POSTGRES_STRING is unset.")
|
||||||
|
}
|
||||||
|
|
||||||
|
return createPostgres(connString)
|
||||||
|
}
|
|
@ -23,6 +23,7 @@ export class DotinoVeloce {
|
||||||
this.federation
|
this.federation
|
||||||
.setActorDispatcher("/users/{identifier}", this.#actorHandler.bind(this))
|
.setActorDispatcher("/users/{identifier}", this.#actorHandler.bind(this))
|
||||||
.mapHandle(this.#actorMapper.bind(this))
|
.mapHandle(this.#actorMapper.bind(this))
|
||||||
|
.setKeyPairsDispatcher(this.#actorKeys.bind(this))
|
||||||
|
|
||||||
this.federation
|
this.federation
|
||||||
.setInboxListeners("/inbox/{identifier}", "/inbox")
|
.setInboxListeners("/inbox/{identifier}", "/inbox")
|
||||||
|
@ -193,22 +194,26 @@ export class DotinoVeloce {
|
||||||
return actor
|
return actor
|
||||||
}
|
}
|
||||||
|
|
||||||
async #actorHandler(ctx: Context<ContextData>, handle: string) {
|
async #actorHandler(ctx: Context<ContextData>, handle: string): Promise<Actor | null> {
|
||||||
l.info`Handling actor with handle: ${handle}`
|
l.info`Handling actor with handle: ${handle}`
|
||||||
|
|
||||||
let actor = null
|
let actor = null
|
||||||
|
|
||||||
actor ??= this.#serviceActor(ctx, handle)
|
actor ??= await this.#serviceActor(ctx, handle)
|
||||||
actor ??= this.#playerActor(ctx, handle)
|
actor ??= await this.#playerActor(ctx, handle)
|
||||||
actor ??= this.#guildActor(ctx, handle)
|
actor ??= await this.#guildActor(ctx, handle)
|
||||||
|
|
||||||
return actor
|
return actor
|
||||||
}
|
}
|
||||||
|
|
||||||
async #actorMapper(_ctx: Context<ContextData>, handle: string) {
|
async #actorMapper(_ctx: Context<ContextData>, handle: string): Promise<string> {
|
||||||
return handle
|
return handle
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async #actorKeys(ctx: Context<ContextData>, handle: string): Promise<CryptoKeyPair[]> {
|
||||||
|
throw "TODO: Not implemented"
|
||||||
|
}
|
||||||
|
|
||||||
async #followHandler(ctx: Context<ContextData>, follow: Follow) {
|
async #followHandler(ctx: Context<ContextData>, follow: Follow) {
|
||||||
l.info`Handling follow request: ${follow}`
|
l.info`Handling follow request: ${follow}`
|
||||||
|
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
import { Redis } from "@@npm/ioredis"
|
|
||||||
import { RedisKvStore } from "@fedify/redis/kv"
|
|
||||||
import { getLogger } from "@logtape/logtape"
|
|
||||||
|
|
||||||
|
|
||||||
const l = getLogger(["dotino-veloce", "fedify", "kv"])
|
|
||||||
|
|
||||||
|
|
||||||
export function createRedisKvStore(redis: Redis) {
|
|
||||||
l.debug`Creating Redis key-value store...`
|
|
||||||
return new RedisKvStore(redis, {})
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
import { getLogger } from "@logtape/logtape"
|
|
||||||
import { Redis } from "@@npm/ioredis"
|
|
||||||
|
|
||||||
|
|
||||||
const l = getLogger(["dotino-veloce", "fedify", "redis"])
|
|
||||||
|
|
||||||
|
|
||||||
export function createRedis() {
|
|
||||||
l.debug`Creating Redis object...`
|
|
||||||
return new Redis({})
|
|
||||||
}
|
|
|
@ -1,17 +1,17 @@
|
||||||
import { doServe } from "./deno/server.ts"
|
import { doServe } from "./deno/server.ts"
|
||||||
import { createRedis } from "./fedify/redis.ts"
|
|
||||||
import { initLogging } from "./deno/logging.ts"
|
import { initLogging } from "./deno/logging.ts"
|
||||||
import { createRedisKvStore } from "./fedify/kv.ts"
|
|
||||||
import { StratzAPI } from "./stratz/api.ts"
|
import { StratzAPI } from "./stratz/api.ts"
|
||||||
import { behindProxy, Fetch } from "@hongminhee/x-forwarded-fetch"
|
import { behindProxy, Fetch } from "@hongminhee/x-forwarded-fetch"
|
||||||
import { createRouter } from "./deno/router.ts"
|
import { createRouter } from "./deno/router.ts"
|
||||||
import { DotinoVeloce } from "./dv/dotinoVeloce.ts"
|
import { DotinoVeloce } from "./dv/dotinoVeloce.ts"
|
||||||
|
import { createPostgresKvStore } from "./database/kv.ts"
|
||||||
|
import { createPostgresFromEnv } from "./database/postgres.ts"
|
||||||
|
|
||||||
|
|
||||||
async function main() {
|
async function main() {
|
||||||
await initLogging()
|
await initLogging()
|
||||||
const redis = createRedis()
|
const postgres = createPostgresFromEnv()
|
||||||
const kv = createRedisKvStore(redis)
|
const kv = createPostgresKvStore(postgres)
|
||||||
const stratz = StratzAPI.fromEnv()
|
const stratz = StratzAPI.fromEnv()
|
||||||
const ap = new DotinoVeloce(kv, stratz)
|
const ap = new DotinoVeloce(kv, stratz)
|
||||||
const router = createRouter(ap)
|
const router = createRouter(ap)
|
||||||
|
|
Loading…
Reference in a new issue