wedance-shared 1.0.189 → 1.0.191

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.
@@ -23,6 +23,11 @@ export interface SchoolStudent {
23
23
  createdAt: string;
24
24
  updatedAt: string;
25
25
  }
26
+ /**
27
+ * Lightweight student projection for rosters, attendance, and check-in.
28
+ * Populated server-side via a join.
29
+ */
30
+ export type SchoolStudentSummary = Pick<SchoolStudent, "id" | "firstName" | "lastName" | "email" | "phone" | "status" | "userId">;
26
31
  /** Row shape for `public.school_staff`. */
27
32
  export interface SchoolStaff {
28
33
  id: string;
@@ -42,6 +47,30 @@ export interface SchoolStaff {
42
47
  createdAt: string;
43
48
  updatedAt: string;
44
49
  }
50
+ /**
51
+ * Lightweight staff projection for schedule and class display.
52
+ * Populated server-side via a join.
53
+ */
54
+ export type SchoolStaffSummary = Pick<SchoolStaff, "id" | "firstName" | "lastName" | "email" | "roles" | "status" | "userId">;
55
+ export type SchoolRoomStatus = "active" | "inactive";
56
+ /** Row shape for `public.school_rooms`. */
57
+ export interface SchoolRoom {
58
+ id: string;
59
+ organizerId: string;
60
+ name: string;
61
+ location: string | null;
62
+ capacity: number | null;
63
+ color: string | null;
64
+ position: number;
65
+ status: SchoolRoomStatus;
66
+ createdAt: string;
67
+ updatedAt: string;
68
+ }
69
+ /**
70
+ * Lightweight room projection for schedule and session display.
71
+ * Populated server-side via a join.
72
+ */
73
+ export type SchoolRoomSummary = Pick<SchoolRoom, "id" | "name" | "location" | "color" | "capacity">;
45
74
  /** Row shape for `public.school_classes`. */
46
75
  export interface SchoolClass {
47
76
  id: string;
@@ -69,9 +98,30 @@ export interface SchoolClass {
69
98
  /** Fallback session length when a session has no explicit endsAt override. */
70
99
  defaultClassDurationMinutes: number | null;
71
100
  status: SchoolClassStatus;
101
+ /**
102
+ * Populated by the server with a join. Not a column on the school_classes table.
103
+ */
104
+ room?: SchoolRoomSummary;
105
+ /**
106
+ * Populated by the server with a join. Not a column on the school_classes table.
107
+ */
108
+ instructor?: SchoolStaffSummary | null;
109
+ /**
110
+ * Populated by the server with a join. Not a column on the school_classes table.
111
+ */
112
+ secondaryInstructor?: SchoolStaffSummary | null;
72
113
  createdAt: string;
73
114
  updatedAt: string;
74
115
  }
116
+ /**
117
+ * Lightweight class projection with the info needed when a class is
118
+ * attached to a session or enrollment. Populated server-side via a join.
119
+ */
120
+ export type SchoolClassSummary = Pick<SchoolClass, "id" | "name" | "level" | "danceTags" | "format" | "status" | "capacity" | "capacityLead" | "capacityFollow" | "instructorStaffId" | "secondaryInstructorStaffId" | "defaultClassDurationMinutes"> & {
121
+ room?: SchoolRoomSummary;
122
+ instructor?: SchoolStaffSummary | null;
123
+ secondaryInstructor?: SchoolStaffSummary | null;
124
+ };
75
125
  /** Row shape for `public.class_sessions`. */
76
126
  export interface ClassSession {
77
127
  id: string;
@@ -98,9 +148,35 @@ export interface ClassSession {
98
148
  bookedFollowCount: number;
99
149
  /** Separate by design: waitlisted rows hold no seat and never count towards capacity. */
100
150
  waitlistCount: number;
151
+ /**
152
+ * Populated by the server with a join. Not a column on the class_sessions table.
153
+ */
154
+ class?: SchoolClassSummary;
155
+ /**
156
+ * Populated by the server with a join. Not a column on the class_sessions table.
157
+ */
158
+ room?: SchoolRoomSummary;
159
+ /**
160
+ * Populated by the server with a join. Not a column on the class_sessions table.
161
+ */
162
+ instructor?: SchoolStaffSummary | null;
163
+ /**
164
+ * Populated by the server with a join. Not a column on the class_sessions table.
165
+ */
166
+ secondaryInstructor?: SchoolStaffSummary | null;
101
167
  createdAt: string;
102
168
  updatedAt: string;
103
169
  }
170
+ /**
171
+ * Lightweight session projection for registration lists and attendance.
172
+ * Populated server-side via a join.
173
+ */
174
+ export type ClassSessionSummary = Pick<ClassSession, "id" | "classId" | "startsAt" | "endsAt" | "status" | "locationName" | "locationAddress" | "roomId" | "instructorStaffId" | "secondaryInstructorStaffId"> & {
175
+ class?: SchoolClassSummary;
176
+ room?: SchoolRoomSummary;
177
+ instructor?: SchoolStaffSummary | null;
178
+ secondaryInstructor?: SchoolStaffSummary | null;
179
+ };
104
180
  /** Row shape for `public.class_enrollments`. */
105
181
  export interface ClassEnrollment {
106
182
  id: string;
@@ -113,9 +189,22 @@ export interface ClassEnrollment {
113
189
  enrolledAt: string;
114
190
  waitlistedAt: string | null;
115
191
  cancelledAt: string | null;
192
+ /**
193
+ * Populated by the server with a join. Not a column on the class_enrollments table.
194
+ */
195
+ class?: SchoolClassSummary;
196
+ /**
197
+ * Populated by the server with a join. Not a column on the class_enrollments table.
198
+ */
199
+ student?: SchoolStudentSummary;
116
200
  createdAt: string;
117
201
  updatedAt: string;
118
202
  }
203
+ /**
204
+ * Lightweight enrollment projection for course-based session access.
205
+ * Populated server-side via a join.
206
+ */
207
+ export type ClassEnrollmentSummary = Pick<ClassEnrollment, "id" | "status" | "role" | "enrolledAt" | "sourceType">;
119
208
  /** Row shape for `public.class_session_registrations`. */
120
209
  export interface ClassSessionRegistration {
121
210
  id: string;
@@ -130,21 +219,22 @@ export interface ClassSessionRegistration {
130
219
  checkedInAt: string | null;
131
220
  attendanceMarkedAt: string | null;
132
221
  cancelledAt: string | null;
133
- createdAt: string;
134
- updatedAt: string;
135
222
  role: DancerRole | null;
136
- }
137
- export type SchoolRoomStatus = "active" | "inactive";
138
- /** Row shape for `public.school_rooms`. */
139
- export interface SchoolRoom {
140
- id: string;
141
- organizerId: string;
142
- name: string;
143
- location: string | null;
144
- capacity: number | null;
145
- color: string | null;
146
- position: number;
147
- status: SchoolRoomStatus;
148
223
  createdAt: string;
149
224
  updatedAt: string;
150
225
  }
226
+ /**
227
+ * Admin roster row — session context lives on the parent response, not each row.
228
+ * Populated server-side via joins.
229
+ */
230
+ export type ClassSessionRegistrationRosterItem = ClassSessionRegistration & {
231
+ student: SchoolStudentSummary;
232
+ enrollment?: ClassEnrollmentSummary;
233
+ };
234
+ /**
235
+ * User booking row — each row carries its own session context.
236
+ * Populated server-side via joins.
237
+ */
238
+ export type ClassSessionRegistrationListItem = ClassSessionRegistration & {
239
+ session: ClassSessionSummary;
240
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wedance-shared",
3
- "version": "1.0.189",
3
+ "version": "1.0.191",
4
4
  "description": "This repository contains shared TypeScript types and interfaces used across multiple WeDance applications:",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",