@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.
- package/LICENSE +21 -0
- package/README.md +133 -0
- package/dist/commands/company.command.d.ts +3 -0
- package/dist/commands/company.command.d.ts.map +1 -0
- package/dist/commands/company.command.js +29 -0
- package/dist/commands/company.command.js.map +1 -0
- package/dist/commands/db.command.d.ts +3 -0
- package/dist/commands/db.command.d.ts.map +1 -0
- package/dist/commands/db.command.js +17 -0
- package/dist/commands/db.command.js.map +1 -0
- package/dist/commands/job.command.d.ts +8 -0
- package/dist/commands/job.command.d.ts.map +1 -0
- package/dist/commands/job.command.js +91 -0
- package/dist/commands/job.command.js.map +1 -0
- package/dist/commands/location.command.d.ts +3 -0
- package/dist/commands/location.command.d.ts.map +1 -0
- package/dist/commands/location.command.js +21 -0
- package/dist/commands/location.command.js.map +1 -0
- package/dist/commands/profile.command.d.ts +3 -0
- package/dist/commands/profile.command.d.ts.map +1 -0
- package/dist/commands/profile.command.js +29 -0
- package/dist/commands/profile.command.js.map +1 -0
- package/dist/commands/serve.command.d.ts +3 -0
- package/dist/commands/serve.command.d.ts.map +1 -0
- package/dist/commands/serve.command.js +9 -0
- package/dist/commands/serve.command.js.map +1 -0
- package/dist/controllers/cli/companyController.d.ts +11 -0
- package/dist/controllers/cli/companyController.d.ts.map +1 -0
- package/dist/controllers/cli/companyController.js +57 -0
- package/dist/controllers/cli/companyController.js.map +1 -0
- package/dist/controllers/cli/db.controller.d.ts +4 -0
- package/dist/controllers/cli/db.controller.d.ts.map +1 -0
- package/dist/controllers/cli/db.controller.js +71 -0
- package/dist/controllers/cli/db.controller.js.map +1 -0
- package/dist/controllers/cli/job.controller.d.ts +8 -0
- package/dist/controllers/cli/job.controller.d.ts.map +1 -0
- package/dist/controllers/cli/job.controller.js +68 -0
- package/dist/controllers/cli/job.controller.js.map +1 -0
- package/dist/controllers/cli/locationController.d.ts +5 -0
- package/dist/controllers/cli/locationController.d.ts.map +1 -0
- package/dist/controllers/cli/locationController.js +57 -0
- package/dist/controllers/cli/locationController.js.map +1 -0
- package/dist/controllers/cli/profile.controller.d.ts +6 -0
- package/dist/controllers/cli/profile.controller.d.ts.map +1 -0
- package/dist/controllers/cli/profile.controller.js +42 -0
- package/dist/controllers/cli/profile.controller.js.map +1 -0
- package/dist/controllers/httpController.d.ts +8 -0
- package/dist/controllers/httpController.d.ts.map +1 -0
- package/dist/controllers/httpController.js +76 -0
- package/dist/controllers/httpController.js.map +1 -0
- package/dist/database/database.d.ts +4 -0
- package/dist/database/database.d.ts.map +1 -0
- package/dist/database/database.js +203 -0
- package/dist/database/database.js.map +1 -0
- package/dist/database/types/companies.type.d.ts +10 -0
- package/dist/database/types/companies.type.d.ts.map +1 -0
- package/dist/database/types/companies.type.js +2 -0
- package/dist/database/types/companies.type.js.map +1 -0
- package/dist/database/types/contacts.type.d.ts +13 -0
- package/dist/database/types/contacts.type.d.ts.map +1 -0
- package/dist/database/types/contacts.type.js +2 -0
- package/dist/database/types/contacts.type.js.map +1 -0
- package/dist/database/types/interviews.type.d.ts +11 -0
- package/dist/database/types/interviews.type.d.ts.map +1 -0
- package/dist/database/types/interviews.type.js +2 -0
- package/dist/database/types/interviews.type.js.map +1 -0
- package/dist/database/types/jobactivity.type.d.ts +7 -0
- package/dist/database/types/jobactivity.type.d.ts.map +1 -0
- package/dist/database/types/jobactivity.type.js +2 -0
- package/dist/database/types/jobactivity.type.js.map +1 -0
- package/dist/database/types/jobcontacts.type.d.ts +5 -0
- package/dist/database/types/jobcontacts.type.d.ts.map +1 -0
- package/dist/database/types/jobcontacts.type.js +2 -0
- package/dist/database/types/jobcontacts.type.js.map +1 -0
- package/dist/database/types/jobdocs.type.d.ts +9 -0
- package/dist/database/types/jobdocs.type.d.ts.map +1 -0
- package/dist/database/types/jobdocs.type.js +2 -0
- package/dist/database/types/jobdocs.type.js.map +1 -0
- package/dist/database/types/joblocation.type.d.ts +5 -0
- package/dist/database/types/joblocation.type.d.ts.map +1 -0
- package/dist/database/types/joblocation.type.js +2 -0
- package/dist/database/types/joblocation.type.js.map +1 -0
- package/dist/database/types/jobpriority.type.d.ts +6 -0
- package/dist/database/types/jobpriority.type.d.ts.map +1 -0
- package/dist/database/types/jobpriority.type.js +2 -0
- package/dist/database/types/jobpriority.type.js.map +1 -0
- package/dist/database/types/jobs.type.d.ts +37 -0
- package/dist/database/types/jobs.type.d.ts.map +1 -0
- package/dist/database/types/jobs.type.js +2 -0
- package/dist/database/types/jobs.type.js.map +1 -0
- package/dist/database/types/jobsource.type.d.ts +5 -0
- package/dist/database/types/jobsource.type.d.ts.map +1 -0
- package/dist/database/types/jobsource.type.js +2 -0
- package/dist/database/types/jobsource.type.js.map +1 -0
- package/dist/database/types/jobstatuses.type.d.ts +6 -0
- package/dist/database/types/jobstatuses.type.d.ts.map +1 -0
- package/dist/database/types/jobstatuses.type.js +2 -0
- package/dist/database/types/jobstatuses.type.js.map +1 -0
- package/dist/database/types/jobstatushistory.type.d.ts +8 -0
- package/dist/database/types/jobstatushistory.type.d.ts.map +1 -0
- package/dist/database/types/jobstatushistory.type.js +2 -0
- package/dist/database/types/jobstatushistory.type.js.map +1 -0
- package/dist/database/types/jobtags.type.d.ts +6 -0
- package/dist/database/types/jobtags.type.d.ts.map +1 -0
- package/dist/database/types/jobtags.type.js +2 -0
- package/dist/database/types/jobtags.type.js.map +1 -0
- package/dist/database/types/jobtasks.type.d.ts +10 -0
- package/dist/database/types/jobtasks.type.d.ts.map +1 -0
- package/dist/database/types/jobtasks.type.js +2 -0
- package/dist/database/types/jobtasks.type.js.map +1 -0
- package/dist/database/types/profile.type.d.ts +7 -0
- package/dist/database/types/profile.type.d.ts.map +1 -0
- package/dist/database/types/profile.type.js +2 -0
- package/dist/database/types/profile.type.js.map +1 -0
- package/dist/database/types/settings.type.d.ts +7 -0
- package/dist/database/types/settings.type.d.ts.map +1 -0
- package/dist/database/types/settings.type.js +2 -0
- package/dist/database/types/settings.type.js.map +1 -0
- package/dist/database/types/tags.type.d.ts +7 -0
- package/dist/database/types/tags.type.d.ts.map +1 -0
- package/dist/database/types/tags.type.js +2 -0
- package/dist/database/types/tags.type.js.map +1 -0
- package/dist/database/types.d.ts +79 -0
- package/dist/database/types.d.ts.map +1 -0
- package/dist/database/types.js +18 -0
- package/dist/database/types.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/repository/companyRepository.d.ts +8 -0
- package/dist/repository/companyRepository.d.ts.map +1 -0
- package/dist/repository/companyRepository.js +53 -0
- package/dist/repository/companyRepository.js.map +1 -0
- package/dist/repository/core.repository.d.ts +16 -0
- package/dist/repository/core.repository.d.ts.map +1 -0
- package/dist/repository/core.repository.js +57 -0
- package/dist/repository/core.repository.js.map +1 -0
- package/dist/repository/jobsRepository.d.ts +14 -0
- package/dist/repository/jobsRepository.d.ts.map +1 -0
- package/dist/repository/jobsRepository.js +186 -0
- package/dist/repository/jobsRepository.js.map +1 -0
- package/dist/repository/locationRepository.d.ts +11 -0
- package/dist/repository/locationRepository.d.ts.map +1 -0
- package/dist/repository/locationRepository.js +33 -0
- package/dist/repository/locationRepository.js.map +1 -0
- package/dist/repository/profileRepository.d.ts +7 -0
- package/dist/repository/profileRepository.d.ts.map +1 -0
- package/dist/repository/profileRepository.js +25 -0
- package/dist/repository/profileRepository.js.map +1 -0
- package/dist/server.d.ts +2 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +16 -0
- package/dist/server.js.map +1 -0
- package/dist/service/companyService.d.ts +6 -0
- package/dist/service/companyService.d.ts.map +1 -0
- package/dist/service/companyService.js +32 -0
- package/dist/service/companyService.js.map +1 -0
- package/dist/service/jobService.d.ts +18 -0
- package/dist/service/jobService.d.ts.map +1 -0
- package/dist/service/jobService.js +48 -0
- package/dist/service/jobService.js.map +1 -0
- package/dist/service/locationService.d.ts +6 -0
- package/dist/service/locationService.d.ts.map +1 -0
- package/dist/service/locationService.js +31 -0
- package/dist/service/locationService.js.map +1 -0
- package/dist/service/profileService.d.ts +10 -0
- package/dist/service/profileService.d.ts.map +1 -0
- package/dist/service/profileService.js +42 -0
- package/dist/service/profileService.js.map +1 -0
- package/dist/session/session.d.ts +12 -0
- package/dist/session/session.d.ts.map +1 -0
- package/dist/session/session.js +22 -0
- package/dist/session/session.js.map +1 -0
- package/dist/transformers/output.d.ts +10 -0
- package/dist/transformers/output.d.ts.map +1 -0
- package/dist/transformers/output.js +67 -0
- package/dist/transformers/output.js.map +1 -0
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"jobdocs.type.js","sourceRoot":"","sources":["../../../src/database/types/jobdocs.type.ts"],"names":[],"mappings":""}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"joblocation.type.js","sourceRoot":"","sources":["../../../src/database/types/joblocation.type.ts"],"names":[],"mappings":""}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"jobs.type.js","sourceRoot":"","sources":["../../../src/database/types/jobs.type.ts"],"names":[],"mappings":""}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"jobsource.type.js","sourceRoot":"","sources":["../../../src/database/types/jobsource.type.ts"],"names":[],"mappings":""}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"jobstatuses.type.js","sourceRoot":"","sources":["../../../src/database/types/jobstatuses.type.ts"],"names":[],"mappings":""}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"jobstatushistory.type.js","sourceRoot":"","sources":["../../../src/database/types/jobstatushistory.type.ts"],"names":[],"mappings":""}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"jobtags.type.js","sourceRoot":"","sources":["../../../src/database/types/jobtags.type.ts"],"names":[],"mappings":""}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"jobtasks.type.js","sourceRoot":"","sources":["../../../src/database/types/jobtasks.type.ts"],"names":[],"mappings":""}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"profile.type.js","sourceRoot":"","sources":["../../../src/database/types/profile.type.ts"],"names":[],"mappings":""}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"settings.type.js","sourceRoot":"","sources":["../../../src/database/types/settings.type.ts"],"names":[],"mappings":""}
|
|
@@ -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 @@
|
|
|
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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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"}
|