@jackie-chan/jobtrack 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 (179) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +133 -0
  3. package/dist/commands/company.command.d.ts +3 -0
  4. package/dist/commands/company.command.d.ts.map +1 -0
  5. package/dist/commands/company.command.js +29 -0
  6. package/dist/commands/company.command.js.map +1 -0
  7. package/dist/commands/db.command.d.ts +3 -0
  8. package/dist/commands/db.command.d.ts.map +1 -0
  9. package/dist/commands/db.command.js +17 -0
  10. package/dist/commands/db.command.js.map +1 -0
  11. package/dist/commands/job.command.d.ts +8 -0
  12. package/dist/commands/job.command.d.ts.map +1 -0
  13. package/dist/commands/job.command.js +91 -0
  14. package/dist/commands/job.command.js.map +1 -0
  15. package/dist/commands/location.command.d.ts +3 -0
  16. package/dist/commands/location.command.d.ts.map +1 -0
  17. package/dist/commands/location.command.js +21 -0
  18. package/dist/commands/location.command.js.map +1 -0
  19. package/dist/commands/profile.command.d.ts +3 -0
  20. package/dist/commands/profile.command.d.ts.map +1 -0
  21. package/dist/commands/profile.command.js +29 -0
  22. package/dist/commands/profile.command.js.map +1 -0
  23. package/dist/commands/serve.command.d.ts +3 -0
  24. package/dist/commands/serve.command.d.ts.map +1 -0
  25. package/dist/commands/serve.command.js +9 -0
  26. package/dist/commands/serve.command.js.map +1 -0
  27. package/dist/controllers/cli/companyController.d.ts +11 -0
  28. package/dist/controllers/cli/companyController.d.ts.map +1 -0
  29. package/dist/controllers/cli/companyController.js +57 -0
  30. package/dist/controllers/cli/companyController.js.map +1 -0
  31. package/dist/controllers/cli/db.controller.d.ts +4 -0
  32. package/dist/controllers/cli/db.controller.d.ts.map +1 -0
  33. package/dist/controllers/cli/db.controller.js +71 -0
  34. package/dist/controllers/cli/db.controller.js.map +1 -0
  35. package/dist/controllers/cli/job.controller.d.ts +8 -0
  36. package/dist/controllers/cli/job.controller.d.ts.map +1 -0
  37. package/dist/controllers/cli/job.controller.js +68 -0
  38. package/dist/controllers/cli/job.controller.js.map +1 -0
  39. package/dist/controllers/cli/locationController.d.ts +5 -0
  40. package/dist/controllers/cli/locationController.d.ts.map +1 -0
  41. package/dist/controllers/cli/locationController.js +57 -0
  42. package/dist/controllers/cli/locationController.js.map +1 -0
  43. package/dist/controllers/cli/profile.controller.d.ts +6 -0
  44. package/dist/controllers/cli/profile.controller.d.ts.map +1 -0
  45. package/dist/controllers/cli/profile.controller.js +42 -0
  46. package/dist/controllers/cli/profile.controller.js.map +1 -0
  47. package/dist/controllers/httpController.d.ts +8 -0
  48. package/dist/controllers/httpController.d.ts.map +1 -0
  49. package/dist/controllers/httpController.js +76 -0
  50. package/dist/controllers/httpController.js.map +1 -0
  51. package/dist/database/database.d.ts +4 -0
  52. package/dist/database/database.d.ts.map +1 -0
  53. package/dist/database/database.js +203 -0
  54. package/dist/database/database.js.map +1 -0
  55. package/dist/database/types/companies.type.d.ts +10 -0
  56. package/dist/database/types/companies.type.d.ts.map +1 -0
  57. package/dist/database/types/companies.type.js +2 -0
  58. package/dist/database/types/companies.type.js.map +1 -0
  59. package/dist/database/types/contacts.type.d.ts +13 -0
  60. package/dist/database/types/contacts.type.d.ts.map +1 -0
  61. package/dist/database/types/contacts.type.js +2 -0
  62. package/dist/database/types/contacts.type.js.map +1 -0
  63. package/dist/database/types/interviews.type.d.ts +11 -0
  64. package/dist/database/types/interviews.type.d.ts.map +1 -0
  65. package/dist/database/types/interviews.type.js +2 -0
  66. package/dist/database/types/interviews.type.js.map +1 -0
  67. package/dist/database/types/jobactivity.type.d.ts +7 -0
  68. package/dist/database/types/jobactivity.type.d.ts.map +1 -0
  69. package/dist/database/types/jobactivity.type.js +2 -0
  70. package/dist/database/types/jobactivity.type.js.map +1 -0
  71. package/dist/database/types/jobcontacts.type.d.ts +5 -0
  72. package/dist/database/types/jobcontacts.type.d.ts.map +1 -0
  73. package/dist/database/types/jobcontacts.type.js +2 -0
  74. package/dist/database/types/jobcontacts.type.js.map +1 -0
  75. package/dist/database/types/jobdocs.type.d.ts +9 -0
  76. package/dist/database/types/jobdocs.type.d.ts.map +1 -0
  77. package/dist/database/types/jobdocs.type.js +2 -0
  78. package/dist/database/types/jobdocs.type.js.map +1 -0
  79. package/dist/database/types/joblocation.type.d.ts +5 -0
  80. package/dist/database/types/joblocation.type.d.ts.map +1 -0
  81. package/dist/database/types/joblocation.type.js +2 -0
  82. package/dist/database/types/joblocation.type.js.map +1 -0
  83. package/dist/database/types/jobpriority.type.d.ts +6 -0
  84. package/dist/database/types/jobpriority.type.d.ts.map +1 -0
  85. package/dist/database/types/jobpriority.type.js +2 -0
  86. package/dist/database/types/jobpriority.type.js.map +1 -0
  87. package/dist/database/types/jobs.type.d.ts +37 -0
  88. package/dist/database/types/jobs.type.d.ts.map +1 -0
  89. package/dist/database/types/jobs.type.js +2 -0
  90. package/dist/database/types/jobs.type.js.map +1 -0
  91. package/dist/database/types/jobsource.type.d.ts +5 -0
  92. package/dist/database/types/jobsource.type.d.ts.map +1 -0
  93. package/dist/database/types/jobsource.type.js +2 -0
  94. package/dist/database/types/jobsource.type.js.map +1 -0
  95. package/dist/database/types/jobstatuses.type.d.ts +6 -0
  96. package/dist/database/types/jobstatuses.type.d.ts.map +1 -0
  97. package/dist/database/types/jobstatuses.type.js +2 -0
  98. package/dist/database/types/jobstatuses.type.js.map +1 -0
  99. package/dist/database/types/jobstatushistory.type.d.ts +8 -0
  100. package/dist/database/types/jobstatushistory.type.d.ts.map +1 -0
  101. package/dist/database/types/jobstatushistory.type.js +2 -0
  102. package/dist/database/types/jobstatushistory.type.js.map +1 -0
  103. package/dist/database/types/jobtags.type.d.ts +6 -0
  104. package/dist/database/types/jobtags.type.d.ts.map +1 -0
  105. package/dist/database/types/jobtags.type.js +2 -0
  106. package/dist/database/types/jobtags.type.js.map +1 -0
  107. package/dist/database/types/jobtasks.type.d.ts +10 -0
  108. package/dist/database/types/jobtasks.type.d.ts.map +1 -0
  109. package/dist/database/types/jobtasks.type.js +2 -0
  110. package/dist/database/types/jobtasks.type.js.map +1 -0
  111. package/dist/database/types/profile.type.d.ts +7 -0
  112. package/dist/database/types/profile.type.d.ts.map +1 -0
  113. package/dist/database/types/profile.type.js +2 -0
  114. package/dist/database/types/profile.type.js.map +1 -0
  115. package/dist/database/types/settings.type.d.ts +7 -0
  116. package/dist/database/types/settings.type.d.ts.map +1 -0
  117. package/dist/database/types/settings.type.js +2 -0
  118. package/dist/database/types/settings.type.js.map +1 -0
  119. package/dist/database/types/tags.type.d.ts +7 -0
  120. package/dist/database/types/tags.type.d.ts.map +1 -0
  121. package/dist/database/types/tags.type.js +2 -0
  122. package/dist/database/types/tags.type.js.map +1 -0
  123. package/dist/database/types.d.ts +79 -0
  124. package/dist/database/types.d.ts.map +1 -0
  125. package/dist/database/types.js +18 -0
  126. package/dist/database/types.js.map +1 -0
  127. package/dist/index.d.ts +3 -0
  128. package/dist/index.d.ts.map +1 -0
  129. package/dist/index.js +23 -0
  130. package/dist/index.js.map +1 -0
  131. package/dist/repository/companyRepository.d.ts +8 -0
  132. package/dist/repository/companyRepository.d.ts.map +1 -0
  133. package/dist/repository/companyRepository.js +53 -0
  134. package/dist/repository/companyRepository.js.map +1 -0
  135. package/dist/repository/core.repository.d.ts +16 -0
  136. package/dist/repository/core.repository.d.ts.map +1 -0
  137. package/dist/repository/core.repository.js +57 -0
  138. package/dist/repository/core.repository.js.map +1 -0
  139. package/dist/repository/jobsRepository.d.ts +14 -0
  140. package/dist/repository/jobsRepository.d.ts.map +1 -0
  141. package/dist/repository/jobsRepository.js +186 -0
  142. package/dist/repository/jobsRepository.js.map +1 -0
  143. package/dist/repository/locationRepository.d.ts +11 -0
  144. package/dist/repository/locationRepository.d.ts.map +1 -0
  145. package/dist/repository/locationRepository.js +33 -0
  146. package/dist/repository/locationRepository.js.map +1 -0
  147. package/dist/repository/profileRepository.d.ts +7 -0
  148. package/dist/repository/profileRepository.d.ts.map +1 -0
  149. package/dist/repository/profileRepository.js +25 -0
  150. package/dist/repository/profileRepository.js.map +1 -0
  151. package/dist/server.d.ts +2 -0
  152. package/dist/server.d.ts.map +1 -0
  153. package/dist/server.js +16 -0
  154. package/dist/server.js.map +1 -0
  155. package/dist/service/companyService.d.ts +6 -0
  156. package/dist/service/companyService.d.ts.map +1 -0
  157. package/dist/service/companyService.js +32 -0
  158. package/dist/service/companyService.js.map +1 -0
  159. package/dist/service/jobService.d.ts +18 -0
  160. package/dist/service/jobService.d.ts.map +1 -0
  161. package/dist/service/jobService.js +48 -0
  162. package/dist/service/jobService.js.map +1 -0
  163. package/dist/service/locationService.d.ts +6 -0
  164. package/dist/service/locationService.d.ts.map +1 -0
  165. package/dist/service/locationService.js +31 -0
  166. package/dist/service/locationService.js.map +1 -0
  167. package/dist/service/profileService.d.ts +10 -0
  168. package/dist/service/profileService.d.ts.map +1 -0
  169. package/dist/service/profileService.js +42 -0
  170. package/dist/service/profileService.js.map +1 -0
  171. package/dist/session/session.d.ts +12 -0
  172. package/dist/session/session.d.ts.map +1 -0
  173. package/dist/session/session.js +22 -0
  174. package/dist/session/session.js.map +1 -0
  175. package/dist/transformers/output.d.ts +10 -0
  176. package/dist/transformers/output.d.ts.map +1 -0
  177. package/dist/transformers/output.js +67 -0
  178. package/dist/transformers/output.js.map +1 -0
  179. package/package.json +44 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobdocs.type.d.ts","sourceRoot":"","sources":["../../../src/database/types/jobdocs.type.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAA;CACrB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=jobdocs.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobdocs.type.js","sourceRoot":"","sources":["../../../src/database/types/jobdocs.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ export interface JobLocations {
2
+ id: number;
3
+ name: string;
4
+ }
5
+ //# sourceMappingURL=joblocation.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"joblocation.type.d.ts","sourceRoot":"","sources":["../../../src/database/types/joblocation.type.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAA;CACf"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=joblocation.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"joblocation.type.js","sourceRoot":"","sources":["../../../src/database/types/joblocation.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ export interface JobPriority {
2
+ id: number;
3
+ name: string;
4
+ sort_order: number | null;
5
+ }
6
+ //# sourceMappingURL=jobpriority.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobpriority.type.d.ts","sourceRoot":"","sources":["../../../src/database/types/jobpriority.type.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=jobpriority.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobpriority.type.js","sourceRoot":"","sources":["../../../src/database/types/jobpriority.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,37 @@
1
+ export type Status = "applied" | "screening" | "interview" | "offer" | "rejected" | "ghosted" | "withdrawn";
2
+ export interface Jobs {
3
+ id: number;
4
+ profile_id: number;
5
+ company_id: number;
6
+ role: string | null;
7
+ status_id: number;
8
+ source_id: number;
9
+ location_id: number | null;
10
+ priority_id: number | null;
11
+ date_applied: string | null;
12
+ link: string | null;
13
+ notes: string | null;
14
+ salary_min: number | null;
15
+ salary_max: number | null;
16
+ salary_currency: string | null;
17
+ created_at: string | null;
18
+ updated_at: string | null;
19
+ }
20
+ export interface UpdateJob {
21
+ company_name?: string;
22
+ role?: string;
23
+ status?: Status;
24
+ status_note?: string | undefined;
25
+ date_applied?: string;
26
+ link?: string | null;
27
+ notes?: string | null;
28
+ source_name?: string;
29
+ location_name?: string;
30
+ mode_name?: string;
31
+ priority_name?: "low" | "medium" | "high";
32
+ salary_min?: number | null;
33
+ salary_max?: number | null;
34
+ salary_currency?: string;
35
+ salary_period_name?: "per year" | "per month" | "per hour";
36
+ }
37
+ //# sourceMappingURL=jobs.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobs.type.d.ts","sourceRoot":"","sources":["../../../src/database/types/jobs.type.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GACd,SAAS,GACT,WAAW,GACX,WAAW,GACX,OAAO,GACP,UAAU,GACV,SAAS,GACT,WAAW,CAAC;AAEhB,MAAM,WAAW,IAAI;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED,MAAM,WAAW,SAAS;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,UAAU,CAAC;CAC5D"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=jobs.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobs.type.js","sourceRoot":"","sources":["../../../src/database/types/jobs.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ export interface JobSource {
2
+ id: number;
3
+ name: string;
4
+ }
5
+ //# sourceMappingURL=jobsource.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobsource.type.d.ts","sourceRoot":"","sources":["../../../src/database/types/jobsource.type.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAA;CACf"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=jobsource.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobsource.type.js","sourceRoot":"","sources":["../../../src/database/types/jobsource.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ export interface JobStatuses {
2
+ id: number;
3
+ name: string;
4
+ sort_order: number | null;
5
+ }
6
+ //# sourceMappingURL=jobstatuses.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobstatuses.type.d.ts","sourceRoot":"","sources":["../../../src/database/types/jobstatuses.type.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=jobstatuses.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobstatuses.type.js","sourceRoot":"","sources":["../../../src/database/types/jobstatuses.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ export interface JobStatusHistory {
2
+ id: number;
3
+ job_id: number;
4
+ status_id: number;
5
+ changed_at: string | null;
6
+ note: string | null;
7
+ }
8
+ //# sourceMappingURL=jobstatushistory.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobstatushistory.type.d.ts","sourceRoot":"","sources":["../../../src/database/types/jobstatushistory.type.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=jobstatushistory.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobstatushistory.type.js","sourceRoot":"","sources":["../../../src/database/types/jobstatushistory.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ export interface JobTags {
2
+ profile_id: number;
3
+ job_id: number;
4
+ tag_id: number;
5
+ }
6
+ //# sourceMappingURL=jobtags.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobtags.type.d.ts","sourceRoot":"","sources":["../../../src/database/types/jobtags.type.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAA;CACjB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=jobtags.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobtags.type.js","sourceRoot":"","sources":["../../../src/database/types/jobtags.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ export interface JobTasks {
2
+ id: number;
3
+ job_id: number;
4
+ title: string;
5
+ due_date: string;
6
+ completed: number;
7
+ created_at: string;
8
+ updated_at: string;
9
+ }
10
+ //# sourceMappingURL=jobtasks.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobtasks.type.d.ts","sourceRoot":"","sources":["../../../src/database/types/jobtasks.type.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAA;CACrB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=jobtasks.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobtasks.type.js","sourceRoot":"","sources":["../../../src/database/types/jobtasks.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ export interface Profile {
2
+ id: number;
3
+ username: string;
4
+ display_name: string | null;
5
+ created_at: string | null;
6
+ }
7
+ //# sourceMappingURL=profile.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.type.d.ts","sourceRoot":"","sources":["../../../src/database/types/profile.type.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=profile.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.type.js","sourceRoot":"","sources":["../../../src/database/types/profile.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ export interface Settings {
2
+ profile_id: number;
3
+ setting_key: string;
4
+ setting_value: string;
5
+ updated_at: string;
6
+ }
7
+ //# sourceMappingURL=settings.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.type.d.ts","sourceRoot":"","sources":["../../../src/database/types/settings.type.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAA;CACrB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=settings.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.type.js","sourceRoot":"","sources":["../../../src/database/types/settings.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ export interface Tags {
2
+ id: number;
3
+ profile_id: number;
4
+ name: string;
5
+ created_at: string;
6
+ }
7
+ //# sourceMappingURL=tags.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tags.type.d.ts","sourceRoot":"","sources":["../../../src/database/types/tags.type.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAA;CACrB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tags.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tags.type.js","sourceRoot":"","sources":["../../../src/database/types/tags.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,79 @@
1
+ export * from "./types/companies.type.js";
2
+ export * from "./types/contacts.type.js";
3
+ export * from "./types/interviews.type.js";
4
+ export * from "./types/jobactivity.type.js";
5
+ export * from "./types/jobcontacts.type.js";
6
+ export * from "./types/jobdocs.type.js";
7
+ export * from "./types/joblocation.type.js";
8
+ export * from "./types/jobpriority.type.js";
9
+ export * from "./types/jobs.type.js";
10
+ export * from "./types/jobsource.type.js";
11
+ export * from "./types/jobstatuses.type.js";
12
+ export * from "./types/jobstatushistory.type.js";
13
+ export * from "./types/jobtags.type.js";
14
+ export * from "./types/jobtasks.type.js";
15
+ export * from "./types/profile.type.js";
16
+ export * from "./types/settings.type.js";
17
+ export * from "./types/tags.type.js";
18
+ export type Status = "applied" | "screening" | "interview" | "offer" | "rejected" | "ghosted" | "withdrawn";
19
+ export interface Profile {
20
+ id: number;
21
+ username: string;
22
+ display_name: string | null;
23
+ created_at: string;
24
+ }
25
+ export interface Company {
26
+ id: number;
27
+ profile_id: number;
28
+ name: string;
29
+ industry: string | null;
30
+ website: string | null;
31
+ created_at: string;
32
+ updated_at: string;
33
+ }
34
+ export interface Job {
35
+ id: number;
36
+ profile_id: number;
37
+ company_id: number;
38
+ role: string;
39
+ status_id: number;
40
+ source_id: number | null;
41
+ location_id: number | null;
42
+ mode_id: number | null;
43
+ priority_id: number | null;
44
+ date_applied: string;
45
+ link: string | null;
46
+ notes: string | null;
47
+ salary_min: number | null;
48
+ salary_max: number | null;
49
+ salary_currency: string | null;
50
+ salary_period_id: number | null;
51
+ created_at: string;
52
+ updated_at: string;
53
+ }
54
+ export interface JobWithDetails extends Job {
55
+ company_name: string;
56
+ status: Status;
57
+ source_name: string | null;
58
+ location_name: string | null;
59
+ mode_name: string | null;
60
+ priority_name: string | null;
61
+ salary_period_name: string | null;
62
+ }
63
+ export interface NewJob {
64
+ company_name: string;
65
+ role: string;
66
+ status?: Status;
67
+ date_applied: string;
68
+ link?: string;
69
+ notes?: string;
70
+ source_name?: string;
71
+ location_name?: string;
72
+ mode_name?: string;
73
+ priority_name?: "low" | "medium" | "high";
74
+ salary_min?: number | null;
75
+ salary_max?: number | null;
76
+ salary_currency?: string;
77
+ salary_period_name?: "per year" | "per month" | "per hour";
78
+ }
79
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/database/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export * from "./types/companies.type.js";
2
+ export * from "./types/contacts.type.js";
3
+ export * from "./types/interviews.type.js";
4
+ export * from "./types/jobactivity.type.js";
5
+ export * from "./types/jobcontacts.type.js";
6
+ export * from "./types/jobdocs.type.js";
7
+ export * from "./types/joblocation.type.js";
8
+ export * from "./types/jobpriority.type.js";
9
+ export * from "./types/jobs.type.js";
10
+ export * from "./types/jobsource.type.js";
11
+ export * from "./types/jobstatuses.type.js";
12
+ export * from "./types/jobstatushistory.type.js";
13
+ export * from "./types/jobtags.type.js";
14
+ export * from "./types/jobtasks.type.js";
15
+ export * from "./types/profile.type.js";
16
+ export * from "./types/settings.type.js";
17
+ export * from "./types/tags.type.js";
18
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/database/types.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,sBAAsB,CAAA;AACpC,cAAc,2BAA2B,CAAA;AACzC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kCAAkC,CAAA;AAChD,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from "commander";
3
+ import { profileCommand } from "./commands/profile.command.js";
4
+ import { addCommand, listCommand } from "./commands/job.command.js";
5
+ import { serveCommand } from "./commands/serve.command.js";
6
+ import { dbCommand } from "./commands/db.command.js";
7
+ import { companyCommand } from "./commands/company.command.js";
8
+ import { locationCommand } from "./commands/location.command.js";
9
+ const program = new Command();
10
+ program
11
+ .name("jobtrack")
12
+ .description("A CLI to track your job applications")
13
+ .version("1.0.0");
14
+ // --- profile subcommands ---
15
+ program.addCommand(profileCommand);
16
+ program.addCommand(addCommand);
17
+ program.addCommand(listCommand);
18
+ program.addCommand(serveCommand);
19
+ program.addCommand(dbCommand);
20
+ program.addCommand(companyCommand);
21
+ program.addCommand(locationCommand);
22
+ program.parse();
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,sCAAsC,CAAC;KACnD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,8BAA8B;AAC9B,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC9B,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AAEpC,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Company } from "../database/types.js";
2
+ export declare function addCompany(profileId: number, name: string, industry?: string, website?: string): Company;
3
+ export declare function getCompaniesByProfileId(profileId: number): Company[];
4
+ export declare function getCompanyById(id: number, profileId: number): Company | undefined;
5
+ export declare function getCompanyByName(name: string, profileId: number): Company | undefined;
6
+ export declare function updateCompany(id: number, profileId: number, industry?: string, website?: string): void;
7
+ export declare function deleteCompany(id: number, profileId: number): void;
8
+ //# sourceMappingURL=companyRepository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"companyRepository.d.ts","sourceRoot":"","sources":["../../src/repository/companyRepository.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,WAc9F;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,EAAE,CAIpE;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAIjF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAIrF;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAgBtG;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAIjE"}
@@ -0,0 +1,53 @@
1
+ import { database } from "../database/database.js";
2
+ export function addCompany(profileId, name, industry, website) {
3
+ const result = database
4
+ .prepare(`
5
+ INSERT INTO companies (profile_id, name, industry, website)
6
+ VALUES (@profileId, @name, @industry, @website)
7
+ `)
8
+ .run({
9
+ profileId,
10
+ name,
11
+ industry: industry ?? null,
12
+ website: website ?? null
13
+ });
14
+ return getCompanyById(Number(result.lastInsertRowid), profileId);
15
+ }
16
+ export function getCompaniesByProfileId(profileId) {
17
+ return database
18
+ .prepare(`SELECT * FROM companies WHERE profile_id = ? ORDER BY name ASC`)
19
+ .all(profileId);
20
+ }
21
+ export function getCompanyById(id, profileId) {
22
+ return database
23
+ .prepare(`SELECT * FROM companies WHERE id = ? AND profile_id = ?`)
24
+ .get(id, profileId);
25
+ }
26
+ export function getCompanyByName(name, profileId) {
27
+ return database
28
+ .prepare(`SELECT * FROM companies WHERE LOWER(name) = LOWER(?) AND profile_id = ?`)
29
+ .get(name, profileId);
30
+ }
31
+ export function updateCompany(id, profileId, industry, website) {
32
+ database
33
+ .prepare(`
34
+ UPDATE companies
35
+ SET
36
+ industry = COALESCE(@industry, industry),
37
+ website = COALESCE(@website, website),
38
+ updated_at = CURRENT_TIMESTAMP
39
+ WHERE id = @id AND profile_id = @profileId
40
+ `)
41
+ .run({
42
+ id,
43
+ profileId,
44
+ industry: industry ?? null,
45
+ website: website ?? null
46
+ });
47
+ }
48
+ export function deleteCompany(id, profileId) {
49
+ database
50
+ .prepare(`DELETE FROM companies WHERE id = ? AND profile_id = ?`)
51
+ .run(id, profileId);
52
+ }
53
+ //# sourceMappingURL=companyRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"companyRepository.js","sourceRoot":"","sources":["../../src/repository/companyRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGnD,MAAM,UAAU,UAAU,CAAC,SAAiB,EAAE,IAAY,EAAE,QAAiB,EAAE,OAAgB;IAC7F,MAAM,MAAM,GAAG,QAAQ;SACpB,OAAO,CAAC;;;KAGR,CAAC;SACD,GAAG,CAAC;QACH,SAAS;QACT,IAAI;QACJ,QAAQ,EAAE,QAAQ,IAAI,IAAI;QAC1B,OAAO,EAAE,OAAO,IAAI,IAAI;KACzB,CAAC,CAAC;IAEL,OAAO,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,SAAS,CAAE,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,SAAiB;IACvD,OAAO,QAAQ;SACZ,OAAO,CAAC,gEAAgE,CAAC;SACzE,GAAG,CAAC,SAAS,CAAc,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAU,EAAE,SAAiB;IAC1D,OAAO,QAAQ;SACZ,OAAO,CAAC,yDAAyD,CAAC;SAClE,GAAG,CAAC,EAAE,EAAE,SAAS,CAAwB,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,SAAiB;IAC9D,OAAO,QAAQ;SACZ,OAAO,CAAC,yEAAyE,CAAC;SAClF,GAAG,CAAC,IAAI,EAAE,SAAS,CAAwB,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAU,EAAE,SAAiB,EAAE,QAAiB,EAAE,OAAgB;IAC9F,QAAQ;SACL,OAAO,CAAC;;;;;;;KAOR,CAAC;SACD,GAAG,CAAC;QACH,EAAE;QACF,SAAS;QACT,QAAQ,EAAE,QAAQ,IAAI,IAAI;QAC1B,OAAO,EAAE,OAAO,IAAI,IAAI;KACzB,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAU,EAAE,SAAiB;IACzD,QAAQ;SACL,OAAO,CAAC,uDAAuD,CAAC;SAChE,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AACxB,CAAC"}
@@ -0,0 +1,16 @@
1
+ export declare function createRepository<T extends {
2
+ id: number;
3
+ }>(table: string): {
4
+ getAll(where?: Partial<Record<string, unknown>>): T[];
5
+ getById(id: number): T | undefined;
6
+ findOne(where: Partial<Record<string, unknown>>): T | undefined;
7
+ insertOne(data: Record<string, unknown>): number;
8
+ updateOne(id: number, data: Record<string, unknown>): void;
9
+ deleteOne(id: number): void;
10
+ };
11
+ export declare function raw<T = unknown>(sql: string, params?: Record<string, unknown>): T[];
12
+ export declare function rawOne<T = unknown>(sql: string, params?: Record<string, unknown>): T | undefined;
13
+ export declare function rawRun(sql: string, params?: Record<string, unknown>): {
14
+ lastInsertRowid: number;
15
+ };
16
+ //# sourceMappingURL=core.repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.repository.d.ts","sourceRoot":"","sources":["../../src/repository/core.repository.ts"],"names":[],"mappings":"AAMA,wBAAgB,gBAAgB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,EAAE,MAAM;IAOpE,MAAM,SAAQ,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAQ,CAAC,EAAE;IAIzD,OAAO,KAAK,MAAM,GAAG,CAAC,GAAG,SAAS;IAMlC,OAAO,QAAQ,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS;IAM/D,SAAS,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAUhD,SAAS,KAAK,MAAM,QAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAQ1D,SAAS,KAAK,MAAM,GAAG,IAAI;EAI9B;AAKD,wBAAgB,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,CAAC,EAAE,CAEvF;AAED,wBAAgB,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,CAAC,GAAG,SAAS,CAEpG;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG;IAAE,eAAe,EAAE,MAAM,CAAA;CAAE,CAGrG"}
@@ -0,0 +1,57 @@
1
+ import { database } from "../database/database.js";
2
+ // The ONLY file that imports `database` directly, besides db/database.ts
3
+ // itself. Every other repository goes through the functions here --
4
+ // either the generic CRUD below, or raw() as an escape hatch for the
5
+ // hand-written joins (like jobs) that don't fit generic CRUD.
6
+ export function createRepository(table) {
7
+ function whereClause(criteria) {
8
+ const keys = Object.keys(criteria);
9
+ return keys.length ? `WHERE ${keys.map((k) => `${k} = @${k}`).join(" AND ")}` : "";
10
+ }
11
+ return {
12
+ getAll(where = {}) {
13
+ return database.prepare(`SELECT * FROM ${table} ${whereClause(where)}`).all(where);
14
+ },
15
+ getById(id) {
16
+ return database.prepare(`SELECT * FROM ${table} WHERE id = ?`).get(id);
17
+ },
18
+ // Same idea as getAll, but returns a single row -- for lookups like
19
+ // "find the company named X for this profile" instead of listing all.
20
+ findOne(where) {
21
+ return database.prepare(`SELECT * FROM ${table} ${whereClause(where)} LIMIT 1`).get(where);
22
+ },
23
+ insertOne(data) {
24
+ const keys = Object.keys(data);
25
+ const columns = keys.join(", ");
26
+ const placeholders = keys.map((k) => `@${k}`).join(", ");
27
+ const result = database
28
+ .prepare(`INSERT INTO ${table} (${columns}) VALUES (${placeholders})`)
29
+ .run(data);
30
+ return Number(result.lastInsertRowid);
31
+ },
32
+ updateOne(id, data) {
33
+ const keys = Object.keys(data);
34
+ const setClause = keys.map((k) => `${k} = @${k}`).join(", ");
35
+ database
36
+ .prepare(`UPDATE ${table} SET ${setClause}, updated_at = CURRENT_TIMESTAMP WHERE id = @id`)
37
+ .run({ ...data, id });
38
+ },
39
+ deleteOne(id) {
40
+ database.prepare(`DELETE FROM ${table} WHERE id = ?`).run(id);
41
+ },
42
+ };
43
+ }
44
+ // Escape hatch for anything generic CRUD can't express -- multi-table
45
+ // joins, lookup-name resolution, aggregate stats queries later on.
46
+ // Still routes through this one file, so `database` stays private to it.
47
+ export function raw(sql, params = {}) {
48
+ return database.prepare(sql).all(params);
49
+ }
50
+ export function rawOne(sql, params = {}) {
51
+ return database.prepare(sql).get(params);
52
+ }
53
+ export function rawRun(sql, params = {}) {
54
+ const result = database.prepare(sql).run(params);
55
+ return { lastInsertRowid: Number(result.lastInsertRowid) };
56
+ }
57
+ //# sourceMappingURL=core.repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.repository.js","sourceRoot":"","sources":["../../src/repository/core.repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { JobWithDetails, NewJob, Status, UpdateJob } from "../database/types.js";
2
+ export declare function insertJob(profileId: number, data: NewJob): number;
3
+ export declare function getAllJobs(profileId: number): JobWithDetails[];
4
+ export declare function getJobById(profileId: number, id: number): JobWithDetails | undefined;
5
+ export declare function updateJob(profileId: number, id: number, data: UpdateJob): void;
6
+ export declare function updateJobStatus(profileId: number, id: number, status: Status, note?: string): void;
7
+ export declare function getJobStatusHistory(profileId: number, jobId: number): {
8
+ id: number;
9
+ status: Status;
10
+ changed_at: string;
11
+ note: string | null;
12
+ }[];
13
+ export declare function deleteJob(profileId: number, id: number): void;
14
+ //# sourceMappingURL=jobsRepository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobsRepository.d.ts","sourceRoot":"","sources":["../../src/repository/jobsRepository.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAsCtF,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAoDjE;AAwBD,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,EAAE,CAI9D;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAIpF;AAKD,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CA2C9E;AAKD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAElG;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAAE,CAY3E;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAE7D"}