@noyrax/5d-database-plugin 0.1.0

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.
Files changed (369) hide show
  1. package/ADR_VORSCHLAEGE.md +247 -0
  2. package/CHROMADB_SETUP.md +69 -0
  3. package/IMPROVEMENT_ROADMAP.md +435 -0
  4. package/INSTALLATION_READINESS.md +150 -0
  5. package/KNOWN_ISSUES.md +210 -0
  6. package/LICENSE +21 -0
  7. package/MCP_SERVER_SETUP.md +359 -0
  8. package/MCP_SERVER_TEST_REPORT.md +206 -0
  9. package/NOYRAX_INTEGRATION.md +224 -0
  10. package/QUICK_START.md +316 -0
  11. package/README.md +240 -0
  12. package/SETUP_NEW_PROJECT.md +260 -0
  13. package/SYSTEM_ANALYSIS_REPORT.md +341 -0
  14. package/out/api/adr-api.d.ts +22 -0
  15. package/out/api/adr-api.d.ts.map +1 -0
  16. package/out/api/adr-api.js +38 -0
  17. package/out/api/adr-api.js.map +1 -0
  18. package/out/api/bootstrap-api.d.ts +43 -0
  19. package/out/api/bootstrap-api.d.ts.map +1 -0
  20. package/out/api/bootstrap-api.js +88 -0
  21. package/out/api/bootstrap-api.js.map +1 -0
  22. package/out/api/change-api.d.ts +30 -0
  23. package/out/api/change-api.d.ts.map +1 -0
  24. package/out/api/change-api.js +54 -0
  25. package/out/api/change-api.js.map +1 -0
  26. package/out/api/context-builder.d.ts +81 -0
  27. package/out/api/context-builder.d.ts.map +1 -0
  28. package/out/api/context-builder.js +288 -0
  29. package/out/api/context-builder.js.map +1 -0
  30. package/out/api/cross-dimension-api.d.ts +43 -0
  31. package/out/api/cross-dimension-api.d.ts.map +1 -0
  32. package/out/api/cross-dimension-api.js +55 -0
  33. package/out/api/cross-dimension-api.js.map +1 -0
  34. package/out/api/dependency-api.d.ts +26 -0
  35. package/out/api/dependency-api.d.ts.map +1 -0
  36. package/out/api/dependency-api.js +46 -0
  37. package/out/api/dependency-api.js.map +1 -0
  38. package/out/api/learning-path-api.d.ts +49 -0
  39. package/out/api/learning-path-api.d.ts.map +1 -0
  40. package/out/api/learning-path-api.js +174 -0
  41. package/out/api/learning-path-api.js.map +1 -0
  42. package/out/api/module-api.d.ts +26 -0
  43. package/out/api/module-api.d.ts.map +1 -0
  44. package/out/api/module-api.js +46 -0
  45. package/out/api/module-api.js.map +1 -0
  46. package/out/api/search-api.d.ts +64 -0
  47. package/out/api/search-api.d.ts.map +1 -0
  48. package/out/api/search-api.js +235 -0
  49. package/out/api/search-api.js.map +1 -0
  50. package/out/api/self-explanation-api.d.ts +71 -0
  51. package/out/api/self-explanation-api.d.ts.map +1 -0
  52. package/out/api/self-explanation-api.js +153 -0
  53. package/out/api/self-explanation-api.js.map +1 -0
  54. package/out/api/semantic-search-api.d.ts +64 -0
  55. package/out/api/semantic-search-api.d.ts.map +1 -0
  56. package/out/api/semantic-search-api.js +205 -0
  57. package/out/api/semantic-search-api.js.map +1 -0
  58. package/out/api/symbol-api.d.ts +22 -0
  59. package/out/api/symbol-api.d.ts.map +1 -0
  60. package/out/api/symbol-api.js +38 -0
  61. package/out/api/symbol-api.js.map +1 -0
  62. package/out/api/vector-api.d.ts +26 -0
  63. package/out/api/vector-api.d.ts.map +1 -0
  64. package/out/api/vector-api.js +49 -0
  65. package/out/api/vector-api.js.map +1 -0
  66. package/out/cli/embedding-cli.d.ts +3 -0
  67. package/out/cli/embedding-cli.d.ts.map +1 -0
  68. package/out/cli/embedding-cli.js +151 -0
  69. package/out/cli/embedding-cli.js.map +1 -0
  70. package/out/cli/ingest-cli.d.ts +3 -0
  71. package/out/cli/ingest-cli.d.ts.map +1 -0
  72. package/out/cli/ingest-cli.js +145 -0
  73. package/out/cli/ingest-cli.js.map +1 -0
  74. package/out/cli/mcp-server-cli.d.ts +3 -0
  75. package/out/cli/mcp-server-cli.d.ts.map +1 -0
  76. package/out/cli/mcp-server-cli.js +159 -0
  77. package/out/cli/mcp-server-cli.js.map +1 -0
  78. package/out/cli/query-cli.d.ts +3 -0
  79. package/out/cli/query-cli.d.ts.map +1 -0
  80. package/out/cli/query-cli.js +217 -0
  81. package/out/cli/query-cli.js.map +1 -0
  82. package/out/cli/semantic-search-cli.d.ts +3 -0
  83. package/out/cli/semantic-search-cli.d.ts.map +1 -0
  84. package/out/cli/semantic-search-cli.js +196 -0
  85. package/out/cli/semantic-search-cli.js.map +1 -0
  86. package/out/cli/test-chromadb.d.ts +3 -0
  87. package/out/cli/test-chromadb.d.ts.map +1 -0
  88. package/out/cli/test-chromadb.js +204 -0
  89. package/out/cli/test-chromadb.js.map +1 -0
  90. package/out/cli/test-v-dimension.d.ts +3 -0
  91. package/out/cli/test-v-dimension.d.ts.map +1 -0
  92. package/out/cli/test-v-dimension.js +330 -0
  93. package/out/cli/test-v-dimension.js.map +1 -0
  94. package/out/cli/tool-cli.d.ts +3 -0
  95. package/out/cli/tool-cli.d.ts.map +1 -0
  96. package/out/cli/tool-cli.js +237 -0
  97. package/out/cli/tool-cli.js.map +1 -0
  98. package/out/cli/verify-openai-key.d.ts +3 -0
  99. package/out/cli/verify-openai-key.d.ts.map +1 -0
  100. package/out/cli/verify-openai-key.js +141 -0
  101. package/out/cli/verify-openai-key.js.map +1 -0
  102. package/out/cli/verify-vss-status.d.ts +3 -0
  103. package/out/cli/verify-vss-status.d.ts.map +1 -0
  104. package/out/cli/verify-vss-status.js +185 -0
  105. package/out/cli/verify-vss-status.js.map +1 -0
  106. package/out/core/chromadb-vector-database.d.ts +52 -0
  107. package/out/core/chromadb-vector-database.d.ts.map +1 -0
  108. package/out/core/chromadb-vector-database.js +276 -0
  109. package/out/core/chromadb-vector-database.js.map +1 -0
  110. package/out/core/docs-path-resolver.d.ts +43 -0
  111. package/out/core/docs-path-resolver.d.ts.map +1 -0
  112. package/out/core/docs-path-resolver.js +137 -0
  113. package/out/core/docs-path-resolver.js.map +1 -0
  114. package/out/core/id-mapper.d.ts +68 -0
  115. package/out/core/id-mapper.d.ts.map +1 -0
  116. package/out/core/id-mapper.js +132 -0
  117. package/out/core/id-mapper.js.map +1 -0
  118. package/out/core/migration-manager.d.ts +75 -0
  119. package/out/core/migration-manager.d.ts.map +1 -0
  120. package/out/core/migration-manager.js +212 -0
  121. package/out/core/migration-manager.js.map +1 -0
  122. package/out/core/multi-db-manager.d.ts +84 -0
  123. package/out/core/multi-db-manager.d.ts.map +1 -0
  124. package/out/core/multi-db-manager.js +206 -0
  125. package/out/core/multi-db-manager.js.map +1 -0
  126. package/out/core/transaction-manager.d.ts +69 -0
  127. package/out/core/transaction-manager.d.ts.map +1 -0
  128. package/out/core/transaction-manager.js +138 -0
  129. package/out/core/transaction-manager.js.map +1 -0
  130. package/out/core/vector-database-factory.d.ts +25 -0
  131. package/out/core/vector-database-factory.d.ts.map +1 -0
  132. package/out/core/vector-database-factory.js +82 -0
  133. package/out/core/vector-database-factory.js.map +1 -0
  134. package/out/core/vector-database-interface.d.ts +50 -0
  135. package/out/core/vector-database-interface.d.ts.map +1 -0
  136. package/out/core/vector-database-interface.js +3 -0
  137. package/out/core/vector-database-interface.js.map +1 -0
  138. package/out/core/vss-loader.d.ts +29 -0
  139. package/out/core/vss-loader.d.ts.map +1 -0
  140. package/out/core/vss-loader.js +150 -0
  141. package/out/core/vss-loader.js.map +1 -0
  142. package/out/core/vss-manager.d.ts +81 -0
  143. package/out/core/vss-manager.d.ts.map +1 -0
  144. package/out/core/vss-manager.js +323 -0
  145. package/out/core/vss-manager.js.map +1 -0
  146. package/out/core/vss-vector-database.d.ts +71 -0
  147. package/out/core/vss-vector-database.d.ts.map +1 -0
  148. package/out/core/vss-vector-database.js +284 -0
  149. package/out/core/vss-vector-database.js.map +1 -0
  150. package/out/embedding/embedding-generator.d.ts +45 -0
  151. package/out/embedding/embedding-generator.d.ts.map +1 -0
  152. package/out/embedding/embedding-generator.js +143 -0
  153. package/out/embedding/embedding-generator.js.map +1 -0
  154. package/out/embedding/embedding-pipeline.d.ts +42 -0
  155. package/out/embedding/embedding-pipeline.d.ts.map +1 -0
  156. package/out/embedding/embedding-pipeline.js +290 -0
  157. package/out/embedding/embedding-pipeline.js.map +1 -0
  158. package/out/extension.d.ts +10 -0
  159. package/out/extension.d.ts.map +1 -0
  160. package/out/extension.js +164 -0
  161. package/out/extension.js.map +1 -0
  162. package/out/ingestors/adr-ingestor.d.ts +41 -0
  163. package/out/ingestors/adr-ingestor.d.ts.map +1 -0
  164. package/out/ingestors/adr-ingestor.js +329 -0
  165. package/out/ingestors/adr-ingestor.js.map +1 -0
  166. package/out/ingestors/base-ingestor.d.ts +30 -0
  167. package/out/ingestors/base-ingestor.d.ts.map +1 -0
  168. package/out/ingestors/base-ingestor.js +3 -0
  169. package/out/ingestors/base-ingestor.js.map +1 -0
  170. package/out/ingestors/change-ingestor.d.ts +36 -0
  171. package/out/ingestors/change-ingestor.d.ts.map +1 -0
  172. package/out/ingestors/change-ingestor.js +216 -0
  173. package/out/ingestors/change-ingestor.js.map +1 -0
  174. package/out/ingestors/dependency-ingestor.d.ts +32 -0
  175. package/out/ingestors/dependency-ingestor.d.ts.map +1 -0
  176. package/out/ingestors/dependency-ingestor.js +194 -0
  177. package/out/ingestors/dependency-ingestor.js.map +1 -0
  178. package/out/ingestors/module-ingestor.d.ts +27 -0
  179. package/out/ingestors/module-ingestor.d.ts.map +1 -0
  180. package/out/ingestors/module-ingestor.js +137 -0
  181. package/out/ingestors/module-ingestor.js.map +1 -0
  182. package/out/ingestors/symbol-ingestor.d.ts +26 -0
  183. package/out/ingestors/symbol-ingestor.d.ts.map +1 -0
  184. package/out/ingestors/symbol-ingestor.js +183 -0
  185. package/out/ingestors/symbol-ingestor.js.map +1 -0
  186. package/out/mcp/resources/adrs.d.ts +13 -0
  187. package/out/mcp/resources/adrs.d.ts.map +1 -0
  188. package/out/mcp/resources/adrs.js +26 -0
  189. package/out/mcp/resources/adrs.js.map +1 -0
  190. package/out/mcp/resources/changes.d.ts +13 -0
  191. package/out/mcp/resources/changes.d.ts.map +1 -0
  192. package/out/mcp/resources/changes.js +26 -0
  193. package/out/mcp/resources/changes.js.map +1 -0
  194. package/out/mcp/resources/dependencies.d.ts +13 -0
  195. package/out/mcp/resources/dependencies.d.ts.map +1 -0
  196. package/out/mcp/resources/dependencies.js +26 -0
  197. package/out/mcp/resources/dependencies.js.map +1 -0
  198. package/out/mcp/resources/modules.d.ts +13 -0
  199. package/out/mcp/resources/modules.d.ts.map +1 -0
  200. package/out/mcp/resources/modules.js +26 -0
  201. package/out/mcp/resources/modules.js.map +1 -0
  202. package/out/mcp/resources/symbols.d.ts +13 -0
  203. package/out/mcp/resources/symbols.d.ts.map +1 -0
  204. package/out/mcp/resources/symbols.js +26 -0
  205. package/out/mcp/resources/symbols.js.map +1 -0
  206. package/out/mcp/server.d.ts +29 -0
  207. package/out/mcp/server.d.ts.map +1 -0
  208. package/out/mcp/server.js +300 -0
  209. package/out/mcp/server.js.map +1 -0
  210. package/out/mcp/tools/architecture-mining.d.ts +46 -0
  211. package/out/mcp/tools/architecture-mining.d.ts.map +1 -0
  212. package/out/mcp/tools/architecture-mining.js +272 -0
  213. package/out/mcp/tools/architecture-mining.js.map +1 -0
  214. package/out/mcp/tools/bootstrap.d.ts +9 -0
  215. package/out/mcp/tools/bootstrap.d.ts.map +1 -0
  216. package/out/mcp/tools/bootstrap.js +14 -0
  217. package/out/mcp/tools/bootstrap.js.map +1 -0
  218. package/out/mcp/tools/cross-analysis.d.ts +18 -0
  219. package/out/mcp/tools/cross-analysis.d.ts.map +1 -0
  220. package/out/mcp/tools/cross-analysis.js +23 -0
  221. package/out/mcp/tools/cross-analysis.js.map +1 -0
  222. package/out/mcp/tools/gap-analysis.d.ts +34 -0
  223. package/out/mcp/tools/gap-analysis.d.ts.map +1 -0
  224. package/out/mcp/tools/gap-analysis.js +106 -0
  225. package/out/mcp/tools/gap-analysis.js.map +1 -0
  226. package/out/mcp/tools/learning-path.d.ts +10 -0
  227. package/out/mcp/tools/learning-path.d.ts.map +1 -0
  228. package/out/mcp/tools/learning-path.js +18 -0
  229. package/out/mcp/tools/learning-path.js.map +1 -0
  230. package/out/mcp/tools/query-dependencies.d.ts +18 -0
  231. package/out/mcp/tools/query-dependencies.d.ts.map +1 -0
  232. package/out/mcp/tools/query-dependencies.js +31 -0
  233. package/out/mcp/tools/query-dependencies.js.map +1 -0
  234. package/out/mcp/tools/query-modules.d.ts +17 -0
  235. package/out/mcp/tools/query-modules.d.ts.map +1 -0
  236. package/out/mcp/tools/query-modules.js +22 -0
  237. package/out/mcp/tools/query-modules.js.map +1 -0
  238. package/out/mcp/tools/query-symbols.d.ts +18 -0
  239. package/out/mcp/tools/query-symbols.d.ts.map +1 -0
  240. package/out/mcp/tools/query-symbols.js +32 -0
  241. package/out/mcp/tools/query-symbols.js.map +1 -0
  242. package/out/mcp/tools/semantic-discovery.d.ts +12 -0
  243. package/out/mcp/tools/semantic-discovery.d.ts.map +1 -0
  244. package/out/mcp/tools/semantic-discovery.js +35 -0
  245. package/out/mcp/tools/semantic-discovery.js.map +1 -0
  246. package/out/mcp/tools/system-explanation.d.ts +9 -0
  247. package/out/mcp/tools/system-explanation.d.ts.map +1 -0
  248. package/out/mcp/tools/system-explanation.js +14 -0
  249. package/out/mcp/tools/system-explanation.js.map +1 -0
  250. package/out/mcp/types.d.ts +19 -0
  251. package/out/mcp/types.d.ts.map +1 -0
  252. package/out/mcp/types.js +6 -0
  253. package/out/mcp/types.js.map +1 -0
  254. package/out/models/adr.d.ts +26 -0
  255. package/out/models/adr.d.ts.map +1 -0
  256. package/out/models/adr.js +3 -0
  257. package/out/models/adr.js.map +1 -0
  258. package/out/models/change.d.ts +42 -0
  259. package/out/models/change.d.ts.map +1 -0
  260. package/out/models/change.js +3 -0
  261. package/out/models/change.js.map +1 -0
  262. package/out/models/dependency.d.ts +37 -0
  263. package/out/models/dependency.d.ts.map +1 -0
  264. package/out/models/dependency.js +3 -0
  265. package/out/models/dependency.js.map +1 -0
  266. package/out/models/entity-reference.d.ts +20 -0
  267. package/out/models/entity-reference.d.ts.map +1 -0
  268. package/out/models/entity-reference.js +19 -0
  269. package/out/models/entity-reference.js.map +1 -0
  270. package/out/models/module.d.ts +26 -0
  271. package/out/models/module.d.ts.map +1 -0
  272. package/out/models/module.js +3 -0
  273. package/out/models/module.js.map +1 -0
  274. package/out/models/symbol.d.ts +31 -0
  275. package/out/models/symbol.d.ts.map +1 -0
  276. package/out/models/symbol.js +3 -0
  277. package/out/models/symbol.js.map +1 -0
  278. package/out/repositories/adr-repository.d.ts +41 -0
  279. package/out/repositories/adr-repository.d.ts.map +1 -0
  280. package/out/repositories/adr-repository.js +128 -0
  281. package/out/repositories/adr-repository.js.map +1 -0
  282. package/out/repositories/base-repository.d.ts +86 -0
  283. package/out/repositories/base-repository.d.ts.map +1 -0
  284. package/out/repositories/base-repository.js +66 -0
  285. package/out/repositories/base-repository.js.map +1 -0
  286. package/out/repositories/change-repository.d.ts +40 -0
  287. package/out/repositories/change-repository.d.ts.map +1 -0
  288. package/out/repositories/change-repository.js +150 -0
  289. package/out/repositories/change-repository.js.map +1 -0
  290. package/out/repositories/dependency-repository.d.ts +40 -0
  291. package/out/repositories/dependency-repository.d.ts.map +1 -0
  292. package/out/repositories/dependency-repository.js +129 -0
  293. package/out/repositories/dependency-repository.js.map +1 -0
  294. package/out/repositories/embedding-repository.d.ts +64 -0
  295. package/out/repositories/embedding-repository.d.ts.map +1 -0
  296. package/out/repositories/embedding-repository.js +126 -0
  297. package/out/repositories/embedding-repository.js.map +1 -0
  298. package/out/repositories/importance-repository.d.ts +63 -0
  299. package/out/repositories/importance-repository.d.ts.map +1 -0
  300. package/out/repositories/importance-repository.js +117 -0
  301. package/out/repositories/importance-repository.js.map +1 -0
  302. package/out/repositories/module-repository.d.ts +37 -0
  303. package/out/repositories/module-repository.d.ts.map +1 -0
  304. package/out/repositories/module-repository.js +122 -0
  305. package/out/repositories/module-repository.js.map +1 -0
  306. package/out/repositories/navigation-repository.d.ts +117 -0
  307. package/out/repositories/navigation-repository.d.ts.map +1 -0
  308. package/out/repositories/navigation-repository.js +211 -0
  309. package/out/repositories/navigation-repository.js.map +1 -0
  310. package/out/repositories/symbol-repository.d.ts +37 -0
  311. package/out/repositories/symbol-repository.d.ts.map +1 -0
  312. package/out/repositories/symbol-repository.js +136 -0
  313. package/out/repositories/symbol-repository.js.map +1 -0
  314. package/out/services/cross-dimension-linker.d.ts +45 -0
  315. package/out/services/cross-dimension-linker.d.ts.map +1 -0
  316. package/out/services/cross-dimension-linker.js +98 -0
  317. package/out/services/cross-dimension-linker.js.map +1 -0
  318. package/out/services/importance-scorer.d.ts +47 -0
  319. package/out/services/importance-scorer.d.ts.map +1 -0
  320. package/out/services/importance-scorer.js +188 -0
  321. package/out/services/importance-scorer.js.map +1 -0
  322. package/out/services/ingestion-orchestrator.d.ts +49 -0
  323. package/out/services/ingestion-orchestrator.d.ts.map +1 -0
  324. package/out/services/ingestion-orchestrator.js +140 -0
  325. package/out/services/ingestion-orchestrator.js.map +1 -0
  326. package/out/services/navigation-builder.d.ts +29 -0
  327. package/out/services/navigation-builder.d.ts.map +1 -0
  328. package/out/services/navigation-builder.js +229 -0
  329. package/out/services/navigation-builder.js.map +1 -0
  330. package/out/services/system-model-builder.d.ts +40 -0
  331. package/out/services/system-model-builder.d.ts.map +1 -0
  332. package/out/services/system-model-builder.js +88 -0
  333. package/out/services/system-model-builder.js.map +1 -0
  334. package/out/ui/commands.d.ts +9 -0
  335. package/out/ui/commands.d.ts.map +1 -0
  336. package/out/ui/commands.js +123 -0
  337. package/out/ui/commands.js.map +1 -0
  338. package/out/ui/database-explorer.d.ts +27 -0
  339. package/out/ui/database-explorer.d.ts.map +1 -0
  340. package/out/ui/database-explorer.js +169 -0
  341. package/out/ui/database-explorer.js.map +1 -0
  342. package/out/ui/detail-view-provider.d.ts +86 -0
  343. package/out/ui/detail-view-provider.d.ts.map +1 -0
  344. package/out/ui/detail-view-provider.js +1037 -0
  345. package/out/ui/detail-view-provider.js.map +1 -0
  346. package/out/ui/search-provider.d.ts +30 -0
  347. package/out/ui/search-provider.d.ts.map +1 -0
  348. package/out/ui/search-provider.js +240 -0
  349. package/out/ui/search-provider.js.map +1 -0
  350. package/out/ui/status-provider.d.ts +17 -0
  351. package/out/ui/status-provider.d.ts.map +1 -0
  352. package/out/ui/status-provider.js +76 -0
  353. package/out/ui/status-provider.js.map +1 -0
  354. package/out/validators/consistency-validator.d.ts +37 -0
  355. package/out/validators/consistency-validator.d.ts.map +1 -0
  356. package/out/validators/consistency-validator.js +93 -0
  357. package/out/validators/consistency-validator.js.map +1 -0
  358. package/out/validators/integrity-validator.d.ts +45 -0
  359. package/out/validators/integrity-validator.d.ts.map +1 -0
  360. package/out/validators/integrity-validator.js +115 -0
  361. package/out/validators/integrity-validator.js.map +1 -0
  362. package/package.json +173 -0
  363. package/schemas/sqlite/001_initial_modules.sql +39 -0
  364. package/schemas/sqlite/002_initial_symbols.sql +46 -0
  365. package/schemas/sqlite/003_initial_dependencies.sql +51 -0
  366. package/schemas/sqlite/004_initial_adrs.sql +41 -0
  367. package/schemas/sqlite/005_initial_changes.sql +54 -0
  368. package/schemas/sqlite/006_initial_ingestion.sql +34 -0
  369. package/schemas/sqlite/006_vectors_schema.sql +73 -0
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AdrRepository = void 0;
4
+ const base_repository_1 = require("./base-repository");
5
+ /**
6
+ * Repository for W-Dimension: ADRs
7
+ */
8
+ class AdrRepository extends base_repository_1.BaseRepositoryImpl {
9
+ constructor(db) {
10
+ super(db, 'W');
11
+ }
12
+ async create(adr) {
13
+ await this.execute(`INSERT INTO adrs (id, plugin_id, adr_number, title, file_name, content_markdown, content_hash, deleted_at, created_at, updated_at)
14
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
15
+ adr.id,
16
+ adr.plugin_id,
17
+ adr.adr_number,
18
+ adr.title,
19
+ adr.file_name,
20
+ adr.content_markdown,
21
+ adr.content_hash,
22
+ adr.deleted_at,
23
+ adr.created_at,
24
+ adr.updated_at
25
+ ]);
26
+ return adr;
27
+ }
28
+ async getById(id, pluginId) {
29
+ const row = await this.queryOne(`SELECT * FROM adrs WHERE id = ? AND plugin_id = ?`, [id, pluginId]);
30
+ if (!row) {
31
+ return null;
32
+ }
33
+ return this.mapRowToAdr(row);
34
+ }
35
+ async getByAdrNumber(adrNumber, pluginId) {
36
+ const row = await this.queryOne(`SELECT * FROM adrs WHERE adr_number = ? AND plugin_id = ?`, [adrNumber, pluginId]);
37
+ if (!row) {
38
+ return null;
39
+ }
40
+ return this.mapRowToAdr(row);
41
+ }
42
+ async update(adr) {
43
+ await this.execute(`UPDATE adrs
44
+ SET title = ?, file_name = ?, content_markdown = ?, content_hash = ?, deleted_at = ?, updated_at = ?
45
+ WHERE id = ? AND plugin_id = ?`, [
46
+ adr.title,
47
+ adr.file_name,
48
+ adr.content_markdown,
49
+ adr.content_hash,
50
+ adr.deleted_at,
51
+ adr.updated_at,
52
+ adr.id,
53
+ adr.plugin_id
54
+ ]);
55
+ return adr;
56
+ }
57
+ async delete(id, pluginId) {
58
+ await this.execute(`UPDATE adrs SET deleted_at = CURRENT_TIMESTAMP WHERE id = ? AND plugin_id = ?`, [id, pluginId]);
59
+ }
60
+ async getAll(pluginId) {
61
+ const rows = await this.queryAll(`SELECT * FROM adrs WHERE plugin_id = ? AND deleted_at IS NULL ORDER BY adr_number`, [pluginId]);
62
+ return rows.map(row => this.mapRowToAdr(row));
63
+ }
64
+ async exists(id, pluginId) {
65
+ const row = await this.queryOne(`SELECT COUNT(*) as count FROM adrs WHERE id = ? AND plugin_id = ?`, [id, pluginId]);
66
+ return row !== null && row.count > 0;
67
+ }
68
+ /**
69
+ * Gets ADRs by content hash (for change detection).
70
+ */
71
+ async findByContentHash(contentHash, pluginId) {
72
+ const rows = await this.queryAll(`SELECT * FROM adrs WHERE content_hash = ? AND plugin_id = ? AND deleted_at IS NULL`, [contentHash, pluginId]);
73
+ return rows.map(row => this.mapRowToAdr(row));
74
+ }
75
+ /**
76
+ * Creates an ADR file mapping.
77
+ */
78
+ async createAdrFileMapping(mapping) {
79
+ await this.execute(`INSERT INTO adr_file_mappings (id, adr_id, file_path)
80
+ VALUES (?, ?, ?)`, [mapping.id, mapping.adr_id, mapping.file_path]);
81
+ return mapping;
82
+ }
83
+ /**
84
+ * Gets all file mappings for an ADR.
85
+ */
86
+ async getAdrFileMappings(adrId) {
87
+ const rows = await this.queryAll(`SELECT * FROM adr_file_mappings WHERE adr_id = ?`, [adrId]);
88
+ return rows.map(row => ({
89
+ id: row.id,
90
+ adr_id: row.adr_id,
91
+ file_path: row.file_path
92
+ }));
93
+ }
94
+ /**
95
+ * Deletes an ADR file mapping by ID.
96
+ */
97
+ async deleteAdrFileMapping(mappingId) {
98
+ await this.execute(`DELETE FROM adr_file_mappings WHERE id = ?`, [mappingId]);
99
+ }
100
+ /**
101
+ * Gets ADRs by file path.
102
+ */
103
+ async findByFilePath(filePath, pluginId) {
104
+ const rows = await this.queryAll(`SELECT a.* FROM adrs a
105
+ JOIN adr_file_mappings afm ON a.id = afm.adr_id
106
+ WHERE afm.file_path = ? AND a.plugin_id = ? AND a.deleted_at IS NULL`, [filePath, pluginId]);
107
+ return rows.map(row => this.mapRowToAdr(row));
108
+ }
109
+ /**
110
+ * Maps a database row to an Adr object.
111
+ */
112
+ mapRowToAdr(row) {
113
+ return {
114
+ id: row.id,
115
+ plugin_id: row.plugin_id,
116
+ adr_number: row.adr_number,
117
+ title: row.title,
118
+ file_name: row.file_name,
119
+ content_markdown: row.content_markdown,
120
+ content_hash: row.content_hash,
121
+ deleted_at: row.deleted_at ? new Date(row.deleted_at) : null,
122
+ created_at: new Date(row.created_at),
123
+ updated_at: new Date(row.updated_at)
124
+ };
125
+ }
126
+ }
127
+ exports.AdrRepository = AdrRepository;
128
+ //# sourceMappingURL=adr-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adr-repository.js","sourceRoot":"","sources":["../../src/repositories/adr-repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ import * as sqlite3 from 'sqlite3';
2
+ import { Dimension } from '../core/multi-db-manager';
3
+ /**
4
+ * Base repository interface for all dimension repositories.
5
+ * Provides common CRUD operations.
6
+ */
7
+ export interface BaseRepository<T> {
8
+ /**
9
+ * Gets the dimension this repository handles.
10
+ */
11
+ getDimension(): Dimension;
12
+ /**
13
+ * Creates a new entity.
14
+ *
15
+ * @param entity The entity to create
16
+ * @returns Promise that resolves to the created entity
17
+ */
18
+ create(entity: T): Promise<T>;
19
+ /**
20
+ * Gets an entity by ID.
21
+ *
22
+ * @param id The entity ID
23
+ * @param pluginId The plugin ID
24
+ * @returns Promise that resolves to the entity, or null if not found
25
+ */
26
+ getById(id: string, pluginId: string): Promise<T | null>;
27
+ /**
28
+ * Updates an existing entity.
29
+ *
30
+ * @param entity The entity to update
31
+ * @returns Promise that resolves to the updated entity
32
+ */
33
+ update(entity: T): Promise<T>;
34
+ /**
35
+ * Deletes an entity by ID (soft delete if supported).
36
+ *
37
+ * @param id The entity ID
38
+ * @param pluginId The plugin ID
39
+ * @returns Promise that resolves when the entity is deleted
40
+ */
41
+ delete(id: string, pluginId: string): Promise<void>;
42
+ /**
43
+ * Gets all entities for a plugin.
44
+ *
45
+ * @param pluginId The plugin ID
46
+ * @returns Promise that resolves to an array of entities
47
+ */
48
+ getAll(pluginId: string): Promise<T[]>;
49
+ /**
50
+ * Checks if an entity exists.
51
+ *
52
+ * @param id The entity ID
53
+ * @param pluginId The plugin ID
54
+ * @returns Promise that resolves to true if the entity exists
55
+ */
56
+ exists(id: string, pluginId: string): Promise<boolean>;
57
+ }
58
+ /**
59
+ * Base implementation helper for repositories.
60
+ * Provides common database access patterns.
61
+ */
62
+ export declare abstract class BaseRepositoryImpl<T> implements BaseRepository<T> {
63
+ protected db: sqlite3.Database;
64
+ protected dimension: Dimension;
65
+ constructor(db: sqlite3.Database, dimension: Dimension);
66
+ getDimension(): Dimension;
67
+ /**
68
+ * Executes a query and returns a single row.
69
+ */
70
+ protected queryOne<TResult>(sql: string, params?: any[]): Promise<TResult | null>;
71
+ /**
72
+ * Executes a query and returns multiple rows.
73
+ */
74
+ protected queryAll<TResult>(sql: string, params?: any[]): Promise<TResult[]>;
75
+ /**
76
+ * Executes an INSERT, UPDATE, or DELETE statement.
77
+ */
78
+ protected execute(sql: string, params?: any[]): Promise<sqlite3.RunResult>;
79
+ abstract create(entity: T): Promise<T>;
80
+ abstract getById(id: string, pluginId: string): Promise<T | null>;
81
+ abstract update(entity: T): Promise<T>;
82
+ abstract delete(id: string, pluginId: string): Promise<void>;
83
+ abstract getAll(pluginId: string): Promise<T[]>;
84
+ abstract exists(id: string, pluginId: string): Promise<boolean>;
85
+ }
86
+ //# sourceMappingURL=base-repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-repository.d.ts","sourceRoot":"","sources":["../../src/repositories/base-repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD;;;GAGG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC;IAC7B;;OAEG;IACH,YAAY,IAAI,SAAS,CAAC;IAE1B;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAE9B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAEzD;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAE9B;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpD;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAEvC;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1D;AAED;;;GAGG;AACH,8BAAsB,kBAAkB,CAAC,CAAC,CAAE,YAAW,cAAc,CAAC,CAAC,CAAC;IACpE,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC;IAC/B,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC;gBAEnB,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS;IAK/C,YAAY,IAAI,SAAS;IAIhC;;OAEG;cACa,QAAQ,CAAC,OAAO,EAC5B,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,GAAG,EAAO,GACnB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAc1B;;OAEG;cACa,QAAQ,CAAC,OAAO,EAC5B,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,GAAG,EAAO,GACnB,OAAO,CAAC,OAAO,EAAE,CAAC;IAYrB;;OAEG;cACa,OAAO,CACnB,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,GAAG,EAAO,GACnB,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;aAab,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;aAC7B,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;aACxD,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;aAC7B,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;aACnD,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;aACtC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CACzE"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseRepositoryImpl = void 0;
4
+ /**
5
+ * Base implementation helper for repositories.
6
+ * Provides common database access patterns.
7
+ */
8
+ class BaseRepositoryImpl {
9
+ constructor(db, dimension) {
10
+ this.db = db;
11
+ this.dimension = dimension;
12
+ }
13
+ getDimension() {
14
+ return this.dimension;
15
+ }
16
+ /**
17
+ * Executes a query and returns a single row.
18
+ */
19
+ async queryOne(sql, params = []) {
20
+ return new Promise((resolve, reject) => {
21
+ this.db.get(sql, params, (err, row) => {
22
+ if (err) {
23
+ reject(err);
24
+ }
25
+ else if (row) {
26
+ resolve(row);
27
+ }
28
+ else {
29
+ resolve(null);
30
+ }
31
+ });
32
+ });
33
+ }
34
+ /**
35
+ * Executes a query and returns multiple rows.
36
+ */
37
+ async queryAll(sql, params = []) {
38
+ return new Promise((resolve, reject) => {
39
+ this.db.all(sql, params, (err, rows) => {
40
+ if (err) {
41
+ reject(err);
42
+ }
43
+ else {
44
+ resolve(rows || []);
45
+ }
46
+ });
47
+ });
48
+ }
49
+ /**
50
+ * Executes an INSERT, UPDATE, or DELETE statement.
51
+ */
52
+ async execute(sql, params = []) {
53
+ return new Promise((resolve, reject) => {
54
+ this.db.run(sql, params, function (err) {
55
+ if (err) {
56
+ reject(err);
57
+ }
58
+ else {
59
+ resolve(this);
60
+ }
61
+ });
62
+ });
63
+ }
64
+ }
65
+ exports.BaseRepositoryImpl = BaseRepositoryImpl;
66
+ //# sourceMappingURL=base-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-repository.js","sourceRoot":"","sources":["../../src/repositories/base-repository.ts"],"names":[],"mappings":";;;AAiEA;;;GAGG;AACH,MAAsB,kBAAkB;IAIpC,YAAY,EAAoB,EAAE,SAAoB;QAClD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,QAAQ,CACpB,GAAW,EACX,SAAgB,EAAE;QAElB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,GAAwB,EAAE,EAAE;gBACvD,IAAI,GAAG,EAAE,CAAC;oBACN,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC;qBAAM,IAAI,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,GAAG,CAAC,CAAC;gBACjB,CAAC;qBAAM,CAAC;oBACJ,OAAO,CAAC,IAAI,CAAC,CAAC;gBAClB,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,QAAQ,CACpB,GAAW,EACX,SAAgB,EAAE;QAElB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,IAA2B,EAAE,EAAE;gBAC1D,IAAI,GAAG,EAAE,CAAC;oBACN,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACJ,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;gBACxB,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,OAAO,CACnB,GAAW,EACX,SAAgB,EAAE;QAElB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,UAAS,GAAG;gBACjC,IAAI,GAAG,EAAE,CAAC;oBACN,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACJ,OAAO,CAAC,IAAI,CAAC,CAAC;gBAClB,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;CASJ;AA5ED,gDA4EC"}
@@ -0,0 +1,40 @@
1
+ import * as sqlite3 from 'sqlite3';
2
+ import { BaseRepositoryImpl } from './base-repository';
3
+ import { ChangeReport, SymbolChange, DependencyChange } from '../models/change';
4
+ /**
5
+ * Repository for T-Dimension: Changes
6
+ */
7
+ export declare class ChangeRepository extends BaseRepositoryImpl<ChangeReport> {
8
+ constructor(db: sqlite3.Database);
9
+ create(changeReport: ChangeReport): Promise<ChangeReport>;
10
+ getById(id: string, pluginId: string): Promise<ChangeReport | null>;
11
+ update(changeReport: ChangeReport): Promise<ChangeReport>;
12
+ delete(id: string, pluginId: string): Promise<void>;
13
+ getAll(pluginId: string): Promise<ChangeReport[]>;
14
+ exists(id: string, pluginId: string): Promise<boolean>;
15
+ /**
16
+ * Gets the latest change report for a plugin.
17
+ */
18
+ getLatest(pluginId: string): Promise<ChangeReport | null>;
19
+ /**
20
+ * Creates a symbol change.
21
+ */
22
+ createSymbolChange(symbolChange: SymbolChange): Promise<SymbolChange>;
23
+ /**
24
+ * Gets all symbol changes for a report.
25
+ */
26
+ getSymbolChanges(reportId: string): Promise<SymbolChange[]>;
27
+ /**
28
+ * Creates a dependency change.
29
+ */
30
+ createDependencyChange(dependencyChange: DependencyChange): Promise<DependencyChange>;
31
+ /**
32
+ * Gets all dependency changes for a report.
33
+ */
34
+ getDependencyChanges(reportId: string): Promise<DependencyChange[]>;
35
+ /**
36
+ * Maps a database row to a ChangeReport object.
37
+ */
38
+ private mapRowToChangeReport;
39
+ }
40
+ //# sourceMappingURL=change-repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"change-repository.d.ts","sourceRoot":"","sources":["../../src/repositories/change-repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGhF;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,kBAAkB,CAAC,YAAY,CAAC;gBACtD,EAAE,EAAE,OAAO,CAAC,QAAQ;IAInB,MAAM,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAmBzD,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAanE,MAAM,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAmBzD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnD,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IASjD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQnE;;OAEG;IACU,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAatE;;OAEG;IACU,kBAAkB,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAkBlF;;OAEG;IACU,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAkBxE;;OAEG;IACU,sBAAsB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAgBlG;;OAEG;IACU,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAgBhF;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAa/B"}
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChangeRepository = void 0;
4
+ const base_repository_1 = require("./base-repository");
5
+ /**
6
+ * Repository for T-Dimension: Changes
7
+ */
8
+ class ChangeRepository extends base_repository_1.BaseRepositoryImpl {
9
+ constructor(db) {
10
+ super(db, 'T');
11
+ }
12
+ async create(changeReport) {
13
+ await this.execute(`INSERT INTO change_reports (id, plugin_id, run_type, parsed_files, skipped_files, total_dependencies, validation_errors, validation_warnings, created_at)
14
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
15
+ changeReport.id,
16
+ changeReport.plugin_id,
17
+ changeReport.run_type,
18
+ changeReport.parsed_files,
19
+ changeReport.skipped_files,
20
+ changeReport.total_dependencies,
21
+ changeReport.validation_errors,
22
+ changeReport.validation_warnings,
23
+ changeReport.created_at
24
+ ]);
25
+ return changeReport;
26
+ }
27
+ async getById(id, pluginId) {
28
+ const row = await this.queryOne(`SELECT * FROM change_reports WHERE id = ? AND plugin_id = ?`, [id, pluginId]);
29
+ if (!row) {
30
+ return null;
31
+ }
32
+ return this.mapRowToChangeReport(row);
33
+ }
34
+ async update(changeReport) {
35
+ await this.execute(`UPDATE change_reports
36
+ SET run_type = ?, parsed_files = ?, skipped_files = ?, total_dependencies = ?, validation_errors = ?, validation_warnings = ?
37
+ WHERE id = ? AND plugin_id = ?`, [
38
+ changeReport.run_type,
39
+ changeReport.parsed_files,
40
+ changeReport.skipped_files,
41
+ changeReport.total_dependencies,
42
+ changeReport.validation_errors,
43
+ changeReport.validation_warnings,
44
+ changeReport.id,
45
+ changeReport.plugin_id
46
+ ]);
47
+ return changeReport;
48
+ }
49
+ async delete(id, pluginId) {
50
+ await this.execute(`DELETE FROM change_reports WHERE id = ? AND plugin_id = ?`, [id, pluginId]);
51
+ }
52
+ async getAll(pluginId) {
53
+ const rows = await this.queryAll(`SELECT * FROM change_reports WHERE plugin_id = ? ORDER BY created_at DESC`, [pluginId]);
54
+ return rows.map(row => this.mapRowToChangeReport(row));
55
+ }
56
+ async exists(id, pluginId) {
57
+ const row = await this.queryOne(`SELECT COUNT(*) as count FROM change_reports WHERE id = ? AND plugin_id = ?`, [id, pluginId]);
58
+ return row !== null && row.count > 0;
59
+ }
60
+ /**
61
+ * Gets the latest change report for a plugin.
62
+ */
63
+ async getLatest(pluginId) {
64
+ const row = await this.queryOne(`SELECT * FROM change_reports WHERE plugin_id = ? ORDER BY created_at DESC LIMIT 1`, [pluginId]);
65
+ if (!row) {
66
+ return null;
67
+ }
68
+ return this.mapRowToChangeReport(row);
69
+ }
70
+ /**
71
+ * Creates a symbol change.
72
+ */
73
+ async createSymbolChange(symbolChange) {
74
+ await this.execute(`INSERT INTO symbol_changes (id, report_id, change_type, file_path, symbol_name, symbol_kind, old_signature, new_signature)
75
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, [
76
+ symbolChange.id,
77
+ symbolChange.report_id,
78
+ symbolChange.change_type,
79
+ symbolChange.file_path,
80
+ symbolChange.symbol_name,
81
+ symbolChange.symbol_kind,
82
+ symbolChange.old_signature,
83
+ symbolChange.new_signature
84
+ ]);
85
+ return symbolChange;
86
+ }
87
+ /**
88
+ * Gets all symbol changes for a report.
89
+ */
90
+ async getSymbolChanges(reportId) {
91
+ const rows = await this.queryAll(`SELECT * FROM symbol_changes WHERE report_id = ?`, [reportId]);
92
+ return rows.map(row => ({
93
+ id: row.id,
94
+ report_id: row.report_id,
95
+ change_type: row.change_type,
96
+ file_path: row.file_path,
97
+ symbol_name: row.symbol_name,
98
+ symbol_kind: row.symbol_kind,
99
+ old_signature: row.old_signature,
100
+ new_signature: row.new_signature
101
+ }));
102
+ }
103
+ /**
104
+ * Creates a dependency change.
105
+ */
106
+ async createDependencyChange(dependencyChange) {
107
+ await this.execute(`INSERT INTO dependency_changes (id, report_id, change_type, from_module, to_module, dependency_type)
108
+ VALUES (?, ?, ?, ?, ?, ?)`, [
109
+ dependencyChange.id,
110
+ dependencyChange.report_id,
111
+ dependencyChange.change_type,
112
+ dependencyChange.from_module,
113
+ dependencyChange.to_module,
114
+ dependencyChange.dependency_type
115
+ ]);
116
+ return dependencyChange;
117
+ }
118
+ /**
119
+ * Gets all dependency changes for a report.
120
+ */
121
+ async getDependencyChanges(reportId) {
122
+ const rows = await this.queryAll(`SELECT * FROM dependency_changes WHERE report_id = ?`, [reportId]);
123
+ return rows.map(row => ({
124
+ id: row.id,
125
+ report_id: row.report_id,
126
+ change_type: row.change_type,
127
+ from_module: row.from_module,
128
+ to_module: row.to_module,
129
+ dependency_type: row.dependency_type
130
+ }));
131
+ }
132
+ /**
133
+ * Maps a database row to a ChangeReport object.
134
+ */
135
+ mapRowToChangeReport(row) {
136
+ return {
137
+ id: row.id,
138
+ plugin_id: row.plugin_id,
139
+ run_type: row.run_type,
140
+ parsed_files: row.parsed_files,
141
+ skipped_files: row.skipped_files,
142
+ total_dependencies: row.total_dependencies,
143
+ validation_errors: row.validation_errors,
144
+ validation_warnings: row.validation_warnings,
145
+ created_at: new Date(row.created_at)
146
+ };
147
+ }
148
+ }
149
+ exports.ChangeRepository = ChangeRepository;
150
+ //# sourceMappingURL=change-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"change-repository.js","sourceRoot":"","sources":["../../src/repositories/change-repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import * as sqlite3 from 'sqlite3';
2
+ import { BaseRepositoryImpl } from './base-repository';
3
+ import { Dependency, DependencyGraphCache, DependencySymbolEvidence } from '../models/dependency';
4
+ /**
5
+ * Repository for Z-Dimension: Dependencies
6
+ */
7
+ export declare class DependencyRepository extends BaseRepositoryImpl<Dependency> {
8
+ constructor(db: sqlite3.Database);
9
+ create(dependency: Dependency): Promise<Dependency>;
10
+ getById(id: string, pluginId: string): Promise<Dependency | null>;
11
+ update(dependency: Dependency): Promise<Dependency>;
12
+ delete(id: string, pluginId: string): Promise<void>;
13
+ getAll(pluginId: string): Promise<Dependency[]>;
14
+ exists(id: string, pluginId: string): Promise<boolean>;
15
+ /**
16
+ * Gets dependencies by from_module.
17
+ */
18
+ findByFromModule(fromModule: string, pluginId: string): Promise<Dependency[]>;
19
+ /**
20
+ * Gets dependencies by to_module.
21
+ */
22
+ findByToModule(toModule: string, pluginId: string): Promise<Dependency[]>;
23
+ /**
24
+ * Gets the dependency graph cache.
25
+ */
26
+ getDependencyGraphCache(pluginId: string): Promise<DependencyGraphCache | null>;
27
+ /**
28
+ * Sets the dependency graph cache.
29
+ */
30
+ setDependencyGraphCache(cache: DependencyGraphCache): Promise<DependencyGraphCache>;
31
+ /**
32
+ * Creates a dependency symbol evidence link.
33
+ */
34
+ createDependencySymbolEvidence(evidence: DependencySymbolEvidence): Promise<DependencySymbolEvidence>;
35
+ /**
36
+ * Maps a database row to a Dependency object.
37
+ */
38
+ private mapRowToDependency;
39
+ }
40
+ //# sourceMappingURL=dependency-repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-repository.d.ts","sourceRoot":"","sources":["../../src/repositories/dependency-repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAGlG;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,kBAAkB,CAAC,UAAU,CAAC;gBACxD,EAAE,EAAE,OAAO,CAAC,QAAQ;IAInB,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAqBnD,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAajE,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAqBnD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnD,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAS/C,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQnE;;OAEG;IACU,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAS1F;;OAEG;IACU,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAStF;;OAEG;IACU,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAkB5F;;OAEG;IACU,uBAAuB,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAShG;;OAEG;IACU,8BAA8B,CAAC,QAAQ,EAAE,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IASlH;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAe7B"}