tuition-schema 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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"institute-profile.schema.d.ts","sourceRoot":"","sources":["../src/institute-profile.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkCxB,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiCvC,CAAC;AAEH,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAC/C,OAAO,4BAA4B,CACpC,CAAC;AAIF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBACD,CAAC;AACzC,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAC/C,OAAO,4BAA4B,CACpC,CAAC"}
@@ -0,0 +1,58 @@
1
+ import { z } from "zod";
2
+ import { TEACHING_MODE, BOARD, FEE_CYCLE, FACILITY } from "./enums.js";
3
+ import { ALL_SUBJECTS, SUBJECT_CATEGORY, CLASS_LEVEL } from "./subjects.js";
4
+ // ─── Sub-schemas ─────────────────────────────────────────────────────
5
+ const classFeeSchema = z.object({
6
+ classLevel: z.enum(CLASS_LEVEL),
7
+ feePerMonth: z.number().int().min(100).max(10_000_000), // paise
8
+ });
9
+ const instituteSubjectSchema = z.object({
10
+ subjectCategory: z.enum(SUBJECT_CATEGORY),
11
+ subject: z.enum(ALL_SUBJECTS),
12
+ classes: z.array(classFeeSchema).min(1).max(20),
13
+ boards: z.array(z.enum(BOARD)).min(1).max(10),
14
+ });
15
+ const facultySchema = z.object({
16
+ name: z.string().trim().min(1).max(100),
17
+ qualification: z.string().trim().max(200).optional(),
18
+ subject: z.string().trim().max(100).optional(),
19
+ });
20
+ const geoJsonPointSchema = z.object({
21
+ type: z.literal("Point"),
22
+ coordinates: z.tuple([
23
+ z.number().min(-180).max(180),
24
+ z.number().min(-90).max(90),
25
+ ]),
26
+ });
27
+ // ─── Create ──────────────────────────────────────────────────────────
28
+ export const createInstituteProfileSchema = z.object({
29
+ instituteName: z.string().trim().min(3).max(200),
30
+ headline: z.string().trim().min(10).max(200),
31
+ description: z.string().trim().min(20).max(3000),
32
+ registrationNumber: z.string().trim().max(50).optional(),
33
+ photos: z.array(z.string().url()).min(1).max(10),
34
+ logo: z.string().url().optional(),
35
+ subjects: z.array(instituteSubjectSchema).min(1).max(30),
36
+ teachingMode: z
37
+ .array(z.enum(["at_institute", "online", "hybrid"]))
38
+ .min(1),
39
+ facultyCount: z.number().int().min(1).max(500),
40
+ faculty: z.array(facultySchema).max(50).optional(),
41
+ yearEstablished: z.number().int().min(1950).max(2030).optional(),
42
+ studentStrength: z.number().int().min(1).max(50_000).optional(),
43
+ facilities: z.array(z.enum(FACILITY)).optional(),
44
+ feeRangeMin: z.number().int().min(100).max(10_000_000), // paise
45
+ feeRangeMax: z.number().int().min(100).max(50_000_000), // paise
46
+ feeCycle: z.enum(FEE_CYCLE).default("monthly"),
47
+ location: geoJsonPointSchema,
48
+ locality: z.string().trim().max(200),
49
+ city: z.string().trim().max(100),
50
+ state: z.string().trim().max(100).optional(),
51
+ pincode: z.string().trim().max(10).optional(),
52
+ address: z.string().trim().max(500),
53
+ operatingHours: z.string().trim().max(200).optional(),
54
+ batchTimings: z.string().trim().max(1000).optional(),
55
+ });
56
+ // ─── Update ──────────────────────────────────────────────────────────
57
+ export const updateInstituteProfileSchema = createInstituteProfileSchema.partial();
58
+ //# sourceMappingURL=institute-profile.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"institute-profile.schema.js","sourceRoot":"","sources":["../src/institute-profile.schema.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from \"zod\";\nimport { TEACHING_MODE, BOARD, FEE_CYCLE, FACILITY } from \"./enums.js\";\nimport { ALL_SUBJECTS, SUBJECT_CATEGORY, CLASS_LEVEL } from \"./subjects.js\";\n\n// ─── Sub-schemas ─────────────────────────────────────────────────────\n\nconst classFeeSchema = z.object({\n classLevel: z.enum(CLASS_LEVEL),\n feePerMonth: z.number().int().min(100).max(10_000_000), // paise\n});\n\nconst instituteSubjectSchema = z.object({\n subjectCategory: z.enum(SUBJECT_CATEGORY),\n subject: z.enum(ALL_SUBJECTS),\n classes: z.array(classFeeSchema).min(1).max(20),\n boards: z.array(z.enum(BOARD)).min(1).max(10),\n});\n\nconst facultySchema = z.object({\n name: z.string().trim().min(1).max(100),\n qualification: z.string().trim().max(200).optional(),\n subject: z.string().trim().max(100).optional(),\n});\n\nconst geoJsonPointSchema = z.object({\n type: z.literal(\"Point\"),\n coordinates: z.tuple([\n z.number().min(-180).max(180),\n z.number().min(-90).max(90),\n ]),\n});\n\n// ─── Create ──────────────────────────────────────────────────────────\n\nexport const createInstituteProfileSchema = z.object({\n instituteName: z.string().trim().min(3).max(200),\n headline: z.string().trim().min(10).max(200),\n description: z.string().trim().min(20).max(3000),\n registrationNumber: z.string().trim().max(50).optional(),\n photos: z.array(z.string().url()).min(1).max(10),\n logo: z.string().url().optional(),\n\n subjects: z.array(instituteSubjectSchema).min(1).max(30),\n teachingMode: z\n .array(z.enum([\"at_institute\", \"online\", \"hybrid\"] as const))\n .min(1),\n\n facultyCount: z.number().int().min(1).max(500),\n faculty: z.array(facultySchema).max(50).optional(),\n yearEstablished: z.number().int().min(1950).max(2030).optional(),\n studentStrength: z.number().int().min(1).max(50_000).optional(),\n\n facilities: z.array(z.enum(FACILITY)).optional(),\n\n feeRangeMin: z.number().int().min(100).max(10_000_000), // paise\n feeRangeMax: z.number().int().min(100).max(50_000_000), // paise\n feeCycle: z.enum(FEE_CYCLE).default(\"monthly\"),\n\n location: geoJsonPointSchema,\n locality: z.string().trim().max(200),\n city: z.string().trim().max(100),\n state: z.string().trim().max(100).optional(),\n pincode: z.string().trim().max(10).optional(),\n address: z.string().trim().max(500),\n\n operatingHours: z.string().trim().max(200).optional(),\n batchTimings: z.string().trim().max(1000).optional(),\n});\n\nexport type CreateInstituteProfileInput = z.infer<\n typeof createInstituteProfileSchema\n>;\n\n// ─── Update ──────────────────────────────────────────────────────────\n\nexport const updateInstituteProfileSchema =\n createInstituteProfileSchema.partial();\nexport type UpdateInstituteProfileInput = z.infer<\n typeof updateInstituteProfileSchema\n>;\n"]}
@@ -0,0 +1,34 @@
1
+ import { z } from "zod";
2
+ export declare const createReviewSchema: z.ZodObject<{
3
+ providerId: z.ZodString;
4
+ enrollmentId: z.ZodString;
5
+ rating: z.ZodNumber;
6
+ title: z.ZodOptional<z.ZodString>;
7
+ comment: z.ZodString;
8
+ tags: z.ZodOptional<z.ZodArray<z.ZodEnum<{
9
+ good_teaching: "good_teaching";
10
+ patient: "patient";
11
+ punctual: "punctual";
12
+ knowledgeable: "knowledgeable";
13
+ good_results: "good_results";
14
+ affordable: "affordable";
15
+ good_facilities: "good_facilities";
16
+ strict: "strict";
17
+ supportive: "supportive";
18
+ interactive: "interactive";
19
+ poor_communication: "poor_communication";
20
+ irregular: "irregular";
21
+ }>>>;
22
+ }, z.core.$strip>;
23
+ export type CreateReviewInput = z.infer<typeof createReviewSchema>;
24
+ export declare const reviewListQuerySchema: z.ZodObject<{
25
+ page: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
26
+ limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
27
+ sortBy: z.ZodDefault<z.ZodEnum<{
28
+ newest: "newest";
29
+ highest: "highest";
30
+ lowest: "lowest";
31
+ }>>;
32
+ }, z.core.$strip>;
33
+ export type ReviewListQuery = z.infer<typeof reviewListQuerySchema>;
34
+ //# sourceMappingURL=review.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review.schema.d.ts","sourceRoot":"","sources":["../src/review.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;iBAO7B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAInE,eAAO,MAAM,qBAAqB;;;;;;;;iBAIhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { z } from "zod";
2
+ import { REVIEW_TAG } from "./enums.js";
3
+ // ─── Create ──────────────────────────────────────────────────────────
4
+ export const createReviewSchema = z.object({
5
+ providerId: z.string().min(1),
6
+ enrollmentId: z.string().min(1),
7
+ rating: z.number().int().min(1).max(5),
8
+ title: z.string().trim().min(3).max(100).optional(),
9
+ comment: z.string().trim().min(10).max(1000),
10
+ tags: z.array(z.enum(REVIEW_TAG)).max(5).optional(),
11
+ });
12
+ // ─── Query ───────────────────────────────────────────────────────────
13
+ export const reviewListQuerySchema = z.object({
14
+ page: z.coerce.number().int().min(1).default(1),
15
+ limit: z.coerce.number().int().min(1).max(50).default(20),
16
+ sortBy: z.enum(["newest", "highest", "lowest"]).default("newest"),
17
+ });
18
+ //# sourceMappingURL=review.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review.schema.js","sourceRoot":"","sources":["../src/review.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,wEAAwE;AAExE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACtC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACnD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;IAC5C,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACpD,CAAC,CAAC;AAIH,wEAAwE;AAExE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/C,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACzD,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;CAClE,CAAC,CAAC","sourcesContent":["import { z } from \"zod\";\nimport { REVIEW_TAG } from \"./enums.js\";\n\n// ─── Create ──────────────────────────────────────────────────────────\n\nexport const createReviewSchema = z.object({\n providerId: z.string().min(1),\n enrollmentId: z.string().min(1),\n rating: z.number().int().min(1).max(5),\n title: z.string().trim().min(3).max(100).optional(),\n comment: z.string().trim().min(10).max(1000),\n tags: z.array(z.enum(REVIEW_TAG)).max(5).optional(),\n});\n\nexport type CreateReviewInput = z.infer<typeof createReviewSchema>;\n\n// ─── Query ───────────────────────────────────────────────────────────\n\nexport const reviewListQuerySchema = z.object({\n page: z.coerce.number().int().min(1).default(1),\n limit: z.coerce.number().int().min(1).max(50).default(20),\n sortBy: z.enum([\"newest\", \"highest\", \"lowest\"]).default(\"newest\"),\n});\n\nexport type ReviewListQuery = z.infer<typeof reviewListQuerySchema>;\n"]}
@@ -0,0 +1,480 @@
1
+ import { z } from "zod";
2
+ export declare const searchTuitionQuerySchema: z.ZodObject<{
3
+ page: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
4
+ limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
5
+ providerType: z.ZodDefault<z.ZodEnum<{
6
+ tutor: "tutor";
7
+ institute: "institute";
8
+ all: "all";
9
+ }>>;
10
+ subject: z.ZodOptional<z.ZodEnum<{
11
+ mathematics: "mathematics";
12
+ english: "english";
13
+ hindi: "hindi";
14
+ science: "science";
15
+ social_studies: "social_studies";
16
+ environmental_studies: "environmental_studies";
17
+ physics: "physics";
18
+ chemistry: "chemistry";
19
+ biology: "biology";
20
+ computer_science: "computer_science";
21
+ information_practices: "information_practices";
22
+ biotechnology: "biotechnology";
23
+ accountancy: "accountancy";
24
+ business_studies: "business_studies";
25
+ economics: "economics";
26
+ entrepreneurship: "entrepreneurship";
27
+ statistics_commerce: "statistics_commerce";
28
+ history: "history";
29
+ geography: "geography";
30
+ political_science: "political_science";
31
+ sociology: "sociology";
32
+ psychology: "psychology";
33
+ philosophy: "philosophy";
34
+ home_science: "home_science";
35
+ legal_studies: "legal_studies";
36
+ media_studies: "media_studies";
37
+ sanskrit: "sanskrit";
38
+ urdu: "urdu";
39
+ tamil: "tamil";
40
+ telugu: "telugu";
41
+ kannada: "kannada";
42
+ malayalam: "malayalam";
43
+ bengali: "bengali";
44
+ marathi: "marathi";
45
+ gujarati: "gujarati";
46
+ punjabi: "punjabi";
47
+ odia: "odia";
48
+ assamese: "assamese";
49
+ manipuri: "manipuri";
50
+ bodo: "bodo";
51
+ dogri: "dogri";
52
+ kashmiri: "kashmiri";
53
+ konkani: "konkani";
54
+ maithili: "maithili";
55
+ nepali: "nepali";
56
+ santali: "santali";
57
+ sindhi: "sindhi";
58
+ french: "french";
59
+ german: "german";
60
+ japanese: "japanese";
61
+ spanish: "spanish";
62
+ chinese: "chinese";
63
+ arabic: "arabic";
64
+ fine_art: "fine_art";
65
+ music_vocal: "music_vocal";
66
+ music_instrumental: "music_instrumental";
67
+ dance: "dance";
68
+ physical_education: "physical_education";
69
+ yoga: "yoga";
70
+ general_knowledge: "general_knowledge";
71
+ moral_science: "moral_science";
72
+ eng_mechanical: "eng_mechanical";
73
+ eng_civil: "eng_civil";
74
+ eng_electrical: "eng_electrical";
75
+ eng_electronics: "eng_electronics";
76
+ eng_computer_science: "eng_computer_science";
77
+ eng_information_technology: "eng_information_technology";
78
+ eng_chemical: "eng_chemical";
79
+ eng_aerospace: "eng_aerospace";
80
+ eng_biotechnology: "eng_biotechnology";
81
+ eng_automobile: "eng_automobile";
82
+ eng_mining: "eng_mining";
83
+ eng_textile: "eng_textile";
84
+ eng_environmental: "eng_environmental";
85
+ eng_instrumentation: "eng_instrumentation";
86
+ eng_production: "eng_production";
87
+ eng_metallurgy: "eng_metallurgy";
88
+ eng_marine: "eng_marine";
89
+ eng_agricultural: "eng_agricultural";
90
+ med_anatomy: "med_anatomy";
91
+ med_physiology: "med_physiology";
92
+ med_biochemistry: "med_biochemistry";
93
+ med_pharmacology: "med_pharmacology";
94
+ med_pathology: "med_pathology";
95
+ med_microbiology: "med_microbiology";
96
+ med_forensic_medicine: "med_forensic_medicine";
97
+ med_community_medicine: "med_community_medicine";
98
+ med_medicine: "med_medicine";
99
+ med_surgery: "med_surgery";
100
+ med_obstetrics_gynecology: "med_obstetrics_gynecology";
101
+ med_pediatrics: "med_pediatrics";
102
+ med_orthopedics: "med_orthopedics";
103
+ med_ophthalmology: "med_ophthalmology";
104
+ med_ent: "med_ent";
105
+ med_dermatology: "med_dermatology";
106
+ med_psychiatry: "med_psychiatry";
107
+ med_radiology: "med_radiology";
108
+ med_anesthesiology: "med_anesthesiology";
109
+ dental_general: "dental_general";
110
+ dental_orthodontics: "dental_orthodontics";
111
+ dental_prosthodontics: "dental_prosthodontics";
112
+ dental_periodontics: "dental_periodontics";
113
+ dental_oral_surgery: "dental_oral_surgery";
114
+ bcom_accounting: "bcom_accounting";
115
+ bcom_taxation: "bcom_taxation";
116
+ bcom_auditing: "bcom_auditing";
117
+ bcom_corporate_law: "bcom_corporate_law";
118
+ bcom_banking: "bcom_banking";
119
+ bcom_finance: "bcom_finance";
120
+ bcom_business_economics: "bcom_business_economics";
121
+ bcom_cost_accounting: "bcom_cost_accounting";
122
+ bsc_mathematics: "bsc_mathematics";
123
+ bsc_physics: "bsc_physics";
124
+ bsc_chemistry: "bsc_chemistry";
125
+ bsc_biology: "bsc_biology";
126
+ bsc_zoology: "bsc_zoology";
127
+ bsc_botany: "bsc_botany";
128
+ bsc_statistics: "bsc_statistics";
129
+ bsc_geology: "bsc_geology";
130
+ bsc_environmental_science: "bsc_environmental_science";
131
+ bsc_microbiology: "bsc_microbiology";
132
+ bsc_genetics: "bsc_genetics";
133
+ bsc_computer_science: "bsc_computer_science";
134
+ bsc_electronics: "bsc_electronics";
135
+ bsc_food_science: "bsc_food_science";
136
+ bsc_forensic_science: "bsc_forensic_science";
137
+ bsc_data_science: "bsc_data_science";
138
+ ba_english_literature: "ba_english_literature";
139
+ ba_hindi_literature: "ba_hindi_literature";
140
+ ba_history: "ba_history";
141
+ ba_political_science: "ba_political_science";
142
+ ba_economics: "ba_economics";
143
+ ba_sociology: "ba_sociology";
144
+ ba_psychology: "ba_psychology";
145
+ ba_philosophy: "ba_philosophy";
146
+ ba_journalism: "ba_journalism";
147
+ ba_mass_communication: "ba_mass_communication";
148
+ ba_public_administration: "ba_public_administration";
149
+ ba_social_work: "ba_social_work";
150
+ ba_geography: "ba_geography";
151
+ ba_anthropology: "ba_anthropology";
152
+ ba_fine_arts: "ba_fine_arts";
153
+ ba_music: "ba_music";
154
+ ba_theatre: "ba_theatre";
155
+ ba_linguistics: "ba_linguistics";
156
+ law_constitutional: "law_constitutional";
157
+ law_criminal: "law_criminal";
158
+ law_civil: "law_civil";
159
+ law_corporate: "law_corporate";
160
+ law_international: "law_international";
161
+ law_labour: "law_labour";
162
+ law_ipr: "law_ipr";
163
+ law_environmental: "law_environmental";
164
+ law_family: "law_family";
165
+ law_tax: "law_tax";
166
+ bba_marketing: "bba_marketing";
167
+ bba_finance: "bba_finance";
168
+ bba_hr: "bba_hr";
169
+ bba_operations: "bba_operations";
170
+ bba_business_analytics: "bba_business_analytics";
171
+ bba_international_business: "bba_international_business";
172
+ design_fashion: "design_fashion";
173
+ design_interior: "design_interior";
174
+ design_graphic: "design_graphic";
175
+ design_product: "design_product";
176
+ design_ux_ui: "design_ux_ui";
177
+ design_animation: "design_animation";
178
+ design_textile: "design_textile";
179
+ nursing: "nursing";
180
+ pharmacy: "pharmacy";
181
+ physiotherapy: "physiotherapy";
182
+ occupational_therapy: "occupational_therapy";
183
+ agriculture: "agriculture";
184
+ veterinary_science: "veterinary_science";
185
+ library_science: "library_science";
186
+ education_bed: "education_bed";
187
+ hotel_management: "hotel_management";
188
+ event_management: "event_management";
189
+ film_studies: "film_studies";
190
+ architecture: "architecture";
191
+ planning: "planning";
192
+ mba_finance: "mba_finance";
193
+ mba_marketing: "mba_marketing";
194
+ mba_hr: "mba_hr";
195
+ mba_operations: "mba_operations";
196
+ mba_it: "mba_it";
197
+ mba_business_analytics: "mba_business_analytics";
198
+ mba_international_business: "mba_international_business";
199
+ mba_healthcare: "mba_healthcare";
200
+ mba_rural_management: "mba_rural_management";
201
+ mba_entrepreneurship: "mba_entrepreneurship";
202
+ mtech_cs: "mtech_cs";
203
+ mtech_electronics: "mtech_electronics";
204
+ mtech_mechanical: "mtech_mechanical";
205
+ mtech_civil: "mtech_civil";
206
+ mtech_ai_ml: "mtech_ai_ml";
207
+ mtech_data_science: "mtech_data_science";
208
+ mtech_robotics: "mtech_robotics";
209
+ mtech_vlsi: "mtech_vlsi";
210
+ mtech_power_systems: "mtech_power_systems";
211
+ mtech_structural: "mtech_structural";
212
+ mtech_environmental: "mtech_environmental";
213
+ mca_software_engineering: "mca_software_engineering";
214
+ mca_dbms: "mca_dbms";
215
+ mca_networking: "mca_networking";
216
+ mca_cloud_computing: "mca_cloud_computing";
217
+ mca_cyber_security: "mca_cyber_security";
218
+ mca_ai: "mca_ai";
219
+ msc_mathematics: "msc_mathematics";
220
+ msc_physics: "msc_physics";
221
+ msc_chemistry: "msc_chemistry";
222
+ msc_biology: "msc_biology";
223
+ msc_statistics: "msc_statistics";
224
+ msc_data_science: "msc_data_science";
225
+ msc_environmental_science: "msc_environmental_science";
226
+ msc_computer_science: "msc_computer_science";
227
+ msc_biotechnology: "msc_biotechnology";
228
+ msc_microbiology: "msc_microbiology";
229
+ msc_forensic_science: "msc_forensic_science";
230
+ ma_english: "ma_english";
231
+ ma_hindi: "ma_hindi";
232
+ ma_history: "ma_history";
233
+ ma_political_science: "ma_political_science";
234
+ ma_economics: "ma_economics";
235
+ ma_sociology: "ma_sociology";
236
+ ma_psychology: "ma_psychology";
237
+ ma_public_administration: "ma_public_administration";
238
+ ma_philosophy: "ma_philosophy";
239
+ ma_social_work: "ma_social_work";
240
+ ma_journalism: "ma_journalism";
241
+ ma_education: "ma_education";
242
+ mcom_accounting: "mcom_accounting";
243
+ mcom_finance: "mcom_finance";
244
+ mcom_taxation: "mcom_taxation";
245
+ mcom_banking: "mcom_banking";
246
+ mcom_business_economics: "mcom_business_economics";
247
+ llm_constitutional: "llm_constitutional";
248
+ llm_criminal: "llm_criminal";
249
+ llm_corporate: "llm_corporate";
250
+ llm_international: "llm_international";
251
+ llm_ipr: "llm_ipr";
252
+ llm_human_rights: "llm_human_rights";
253
+ llm_cyber_law: "llm_cyber_law";
254
+ md_medicine: "md_medicine";
255
+ md_pediatrics: "md_pediatrics";
256
+ md_dermatology: "md_dermatology";
257
+ md_psychiatry: "md_psychiatry";
258
+ md_radiology: "md_radiology";
259
+ md_anesthesiology: "md_anesthesiology";
260
+ md_pathology: "md_pathology";
261
+ md_pharmacology: "md_pharmacology";
262
+ md_community_medicine: "md_community_medicine";
263
+ ms_surgery: "ms_surgery";
264
+ ms_orthopedics: "ms_orthopedics";
265
+ ms_ophthalmology: "ms_ophthalmology";
266
+ ms_ent: "ms_ent";
267
+ ms_obstetrics_gynecology: "ms_obstetrics_gynecology";
268
+ pg_diploma_management: "pg_diploma_management";
269
+ pg_diploma_journalism: "pg_diploma_journalism";
270
+ pg_diploma_clinical_research: "pg_diploma_clinical_research";
271
+ mpharma: "mpharma";
272
+ mphil: "mphil";
273
+ phd_research: "phd_research";
274
+ jee_main: "jee_main";
275
+ jee_advanced: "jee_advanced";
276
+ bitsat: "bitsat";
277
+ viteee: "viteee";
278
+ srmjee: "srmjee";
279
+ mht_cet: "mht_cet";
280
+ wbjee: "wbjee";
281
+ kcet: "kcet";
282
+ ap_eamcet: "ap_eamcet";
283
+ ts_eamcet: "ts_eamcet";
284
+ comedk: "comedk";
285
+ kiitee: "kiitee";
286
+ manipal_met: "manipal_met";
287
+ neet_ug: "neet_ug";
288
+ neet_pg: "neet_pg";
289
+ neet_ss: "neet_ss";
290
+ aiims_pg: "aiims_pg";
291
+ jipmer_pg: "jipmer_pg";
292
+ fmge: "fmge";
293
+ neet_mds: "neet_mds";
294
+ ini_cet: "ini_cet";
295
+ upsc_cse: "upsc_cse";
296
+ upsc_ifs: "upsc_ifs";
297
+ upsc_cds: "upsc_cds";
298
+ upsc_nda: "upsc_nda";
299
+ upsc_capf: "upsc_capf";
300
+ upsc_ese: "upsc_ese";
301
+ upsc_cms: "upsc_cms";
302
+ state_psc: "state_psc";
303
+ uppsc: "uppsc";
304
+ bpsc: "bpsc";
305
+ mppsc: "mppsc";
306
+ rpsc: "rpsc";
307
+ gpsc: "gpsc";
308
+ tspsc: "tspsc";
309
+ appsc: "appsc";
310
+ kpsc: "kpsc";
311
+ wbpsc: "wbpsc";
312
+ mpsc_maharashtra: "mpsc_maharashtra";
313
+ tnpsc: "tnpsc";
314
+ kppsc: "kppsc";
315
+ nda: "nda";
316
+ cds: "cds";
317
+ afcat: "afcat";
318
+ indian_navy: "indian_navy";
319
+ indian_coast_guard: "indian_coast_guard";
320
+ territorial_army: "territorial_army";
321
+ ibps_po: "ibps_po";
322
+ ibps_clerk: "ibps_clerk";
323
+ ibps_so: "ibps_so";
324
+ ibps_rrb: "ibps_rrb";
325
+ sbi_po: "sbi_po";
326
+ sbi_clerk: "sbi_clerk";
327
+ sbi_so: "sbi_so";
328
+ rbi_grade_b: "rbi_grade_b";
329
+ rbi_assistant: "rbi_assistant";
330
+ sebi_grade_a: "sebi_grade_a";
331
+ nabard_grade_a: "nabard_grade_a";
332
+ nabard_grade_b: "nabard_grade_b";
333
+ lic_aao: "lic_aao";
334
+ lic_ado: "lic_ado";
335
+ niacl_ao: "niacl_ao";
336
+ uiic_ao: "uiic_ao";
337
+ ssc_cgl: "ssc_cgl";
338
+ ssc_chsl: "ssc_chsl";
339
+ ssc_mts: "ssc_mts";
340
+ ssc_gd: "ssc_gd";
341
+ ssc_je: "ssc_je";
342
+ ssc_stenographer: "ssc_stenographer";
343
+ ssc_cpo: "ssc_cpo";
344
+ ssc_selection_post: "ssc_selection_post";
345
+ cat: "cat";
346
+ xat: "xat";
347
+ mat: "mat";
348
+ snap: "snap";
349
+ cmat: "cmat";
350
+ nmat: "nmat";
351
+ iift: "iift";
352
+ atma: "atma";
353
+ tissnet: "tissnet";
354
+ micat: "micat";
355
+ clat: "clat";
356
+ ailet: "ailet";
357
+ lsat_india: "lsat_india";
358
+ mh_cet_law: "mh_cet_law";
359
+ du_llb: "du_llb";
360
+ bhu_llb: "bhu_llb";
361
+ symbiosis_set: "symbiosis_set";
362
+ nid: "nid";
363
+ nift: "nift";
364
+ uceed: "uceed";
365
+ ceed: "ceed";
366
+ ctet: "ctet";
367
+ tet_state: "tet_state";
368
+ ugc_net: "ugc_net";
369
+ csir_net: "csir_net";
370
+ set_state: "set_state";
371
+ kvs_pgt_tgt: "kvs_pgt_tgt";
372
+ navodaya_nv: "navodaya_nv";
373
+ dsssb: "dsssb";
374
+ rrb_ntpc: "rrb_ntpc";
375
+ rrb_group_d: "rrb_group_d";
376
+ rrb_je: "rrb_je";
377
+ rrb_alp: "rrb_alp";
378
+ rrb_paramedical: "rrb_paramedical";
379
+ gate: "gate";
380
+ ese: "ese";
381
+ gre: "gre";
382
+ gmat: "gmat";
383
+ toefl: "toefl";
384
+ ielts: "ielts";
385
+ sat: "sat";
386
+ act: "act";
387
+ pte: "pte";
388
+ ca_foundation: "ca_foundation";
389
+ ca_intermediate: "ca_intermediate";
390
+ ca_final: "ca_final";
391
+ cs_foundation: "cs_foundation";
392
+ cs_executive: "cs_executive";
393
+ cs_professional: "cs_professional";
394
+ cma_foundation: "cma_foundation";
395
+ cma_intermediate: "cma_intermediate";
396
+ cma_final: "cma_final";
397
+ cfa: "cfa";
398
+ frm: "frm";
399
+ acca: "acca";
400
+ cuet_ug: "cuet_ug";
401
+ cuet_pg: "cuet_pg";
402
+ jnu_entrance: "jnu_entrance";
403
+ du_entrance: "du_entrance";
404
+ bhu_entrance: "bhu_entrance";
405
+ amu_entrance: "amu_entrance";
406
+ ipu_cet: "ipu_cet";
407
+ jmi_entrance: "jmi_entrance";
408
+ olympiad_math: "olympiad_math";
409
+ olympiad_science: "olympiad_science";
410
+ olympiad_physics: "olympiad_physics";
411
+ olympiad_chemistry: "olympiad_chemistry";
412
+ olympiad_biology: "olympiad_biology";
413
+ olympiad_astronomy: "olympiad_astronomy";
414
+ olympiad_informatics: "olympiad_informatics";
415
+ ntse: "ntse";
416
+ kvpy: "kvpy";
417
+ inspire: "inspire";
418
+ }>>;
419
+ classLevel: z.ZodOptional<z.ZodEnum<{
420
+ graduation: "graduation";
421
+ post_graduation: "post_graduation";
422
+ nursery: "nursery";
423
+ lkg: "lkg";
424
+ ukg: "ukg";
425
+ 1: "1";
426
+ 2: "2";
427
+ 3: "3";
428
+ 4: "4";
429
+ 5: "5";
430
+ 6: "6";
431
+ 7: "7";
432
+ 8: "8";
433
+ 9: "9";
434
+ 10: "10";
435
+ 11: "11";
436
+ 12: "12";
437
+ competitive: "competitive";
438
+ }>>;
439
+ board: z.ZodOptional<z.ZodEnum<{
440
+ cbse: "cbse";
441
+ icse: "icse";
442
+ isc: "isc";
443
+ state_board: "state_board";
444
+ ib: "ib";
445
+ igcse: "igcse";
446
+ cambridge: "cambridge";
447
+ nios: "nios";
448
+ open_board: "open_board";
449
+ any: "any";
450
+ }>>;
451
+ teachingMode: z.ZodOptional<z.ZodEnum<{
452
+ home_visit: "home_visit";
453
+ at_tutor: "at_tutor";
454
+ at_institute: "at_institute";
455
+ online: "online";
456
+ hybrid: "hybrid";
457
+ }>>;
458
+ minFee: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
459
+ maxFee: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
460
+ minRating: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
461
+ genderPreference: z.ZodOptional<z.ZodEnum<{
462
+ any: "any";
463
+ male: "male";
464
+ female: "female";
465
+ }>>;
466
+ lng: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
467
+ lat: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
468
+ radiusKm: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
469
+ search: z.ZodOptional<z.ZodString>;
470
+ sortBy: z.ZodDefault<z.ZodEnum<{
471
+ distance: "distance";
472
+ rating: "rating";
473
+ fee_low: "fee_low";
474
+ fee_high: "fee_high";
475
+ student_count: "student_count";
476
+ newest: "newest";
477
+ }>>;
478
+ }, z.core.$strip>;
479
+ export type SearchTuitionQuery = z.infer<typeof searchTuitionQuerySchema>;
480
+ //# sourceMappingURL=search.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.schema.d.ts","sourceRoot":"","sources":["../src/search.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiCnC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { z } from "zod";
2
+ import { PROVIDER_TYPE, TEACHING_MODE, GENDER_PREFERENCE, SEARCH_SORT_BY, } from "./enums.js";
3
+ import { ALL_SUBJECTS, CLASS_LEVEL } from "./subjects.js";
4
+ import { BOARD } from "./enums.js";
5
+ export const searchTuitionQuerySchema = z.object({
6
+ page: z.coerce.number().int().min(1).default(1),
7
+ limit: z.coerce.number().int().min(1).max(50).default(20),
8
+ // Provider type filter
9
+ providerType: z.enum([...PROVIDER_TYPE, "all"]).default("all"),
10
+ // Academic filters
11
+ subject: z.enum(ALL_SUBJECTS).optional(),
12
+ classLevel: z.enum(CLASS_LEVEL).optional(),
13
+ board: z.enum(BOARD).optional(),
14
+ teachingMode: z.enum(TEACHING_MODE).optional(),
15
+ // Fee range (in paise)
16
+ minFee: z.coerce.number().int().min(0).optional(),
17
+ maxFee: z.coerce.number().int().min(0).optional(),
18
+ // Rating
19
+ minRating: z.coerce.number().min(1).max(5).optional(),
20
+ // Tutor-specific
21
+ genderPreference: z.enum(GENDER_PREFERENCE).optional(),
22
+ // Geolocation
23
+ lng: z.coerce.number().min(-180).max(180).optional(),
24
+ lat: z.coerce.number().min(-90).max(90).optional(),
25
+ radiusKm: z.coerce.number().min(1).max(100).default(10),
26
+ // Free text
27
+ search: z.string().trim().max(120).optional(),
28
+ // Sort
29
+ sortBy: z.enum(SEARCH_SORT_BY).default("distance"),
30
+ });
31
+ //# sourceMappingURL=search.schema.js.map