reset-infra 1.0.6 → 1.0.7

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 (2) hide show
  1. package/package.json +35 -35
  2. package/prisma/schema.prisma +232 -232
package/package.json CHANGED
@@ -1,36 +1,36 @@
1
- {
2
- "name": "reset-infra",
3
- "version": "1.0.6",
4
- "description": "ReSet – Database infrastructure, Prisma migrations & Zod schema generation",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
7
- "files": [
8
- "dist",
9
- "prisma/schema.prisma"
10
- ],
11
- "scripts": {
12
- "build": "tsc",
13
- "db:up": "docker compose up -d",
14
- "db:down": "docker compose down",
15
- "db:migrate": "npx prisma migrate dev",
16
- "db:generate": "npx prisma generate",
17
- "prepublishOnly": "npm run build"
18
- },
19
- "keywords": [],
20
- "author": "",
21
- "license": "ISC",
22
- "dependencies": {
23
- "dotenv": "^17.3.1",
24
- "mongoose": "^9.2.3"
25
- },
26
- "peerDependencies": {
27
- "@prisma/client": "^7.4.0",
28
- "zod": "^3.22.0 || ^4.0.0"
29
- },
30
- "devDependencies": {
31
- "@types/node": "^25.3.0",
32
- "prisma": "^7.4.1",
33
- "typescript": "^5.9.3",
34
- "zod-prisma-types": "^3.3.11"
35
- }
1
+ {
2
+ "name": "reset-infra",
3
+ "version": "1.0.7",
4
+ "description": "ReSet – Database infrastructure, Prisma migrations & Zod schema generation",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist",
9
+ "prisma/schema.prisma"
10
+ ],
11
+ "scripts": {
12
+ "build": "tsc",
13
+ "db:up": "docker compose up -d",
14
+ "db:down": "docker compose down",
15
+ "db:migrate": "npx prisma migrate dev",
16
+ "db:generate": "npx prisma generate",
17
+ "prepublishOnly": "npm run build"
18
+ },
19
+ "keywords": [],
20
+ "author": "",
21
+ "license": "ISC",
22
+ "dependencies": {
23
+ "dotenv": "^17.3.1",
24
+ "mongoose": "^9.2.3"
25
+ },
26
+ "peerDependencies": {
27
+ "@prisma/client": "^7.4.0",
28
+ "zod": "^3.22.0 || ^4.0.0"
29
+ },
30
+ "devDependencies": {
31
+ "@types/node": "^25.3.0",
32
+ "prisma": "^7.4.1",
33
+ "typescript": "^5.9.3",
34
+ "zod-prisma-types": "^3.3.11"
35
+ }
36
36
  }
@@ -1,232 +1,232 @@
1
- generator client {
2
- provider = "prisma-client-js"
3
- previewFeatures = ["multiSchema"]
4
- }
5
-
6
- generator zod {
7
- provider = "zod-prisma-types"
8
- output = "../src/schemas"
9
- }
10
-
11
- datasource db {
12
- provider = "postgresql"
13
- schemas = ["auth", "tracking", "emergency", "core"]
14
- }
15
-
16
- enum UserRole {
17
- ADICTO
18
- PADRINO
19
- ADMIN
20
-
21
- @@schema("auth")
22
- }
23
-
24
- enum SponsorshipStatus {
25
- PENDING
26
- ACTIVE
27
- INACTIVE
28
-
29
- @@schema("core")
30
- }
31
-
32
- // ==========================================
33
- // 1. SCHEMA: AUTH
34
- // ==========================================
35
- model User {
36
- id String @id @default(uuid()) @db.Uuid
37
- name String @db.VarChar(100)
38
- email String @unique @db.VarChar(150)
39
- password_hash String @db.Text
40
- role UserRole @default(ADICTO)
41
- created_at DateTime @default(now())
42
- updated_at DateTime @default(now()) @updatedAt
43
- sponsor_code String? @unique @db.VarChar(10)
44
-
45
- addictions UserAddiction[]
46
- daily_logs DailyLog[]
47
- sponsorships_as_sponsor Sponsorship[] @relation("SponsorRelation")
48
- sponsorships_as_addict Sponsorship[] @relation("AddictRelation")
49
- contacts SupportContact[]
50
- alerts EmergencyAlert[]
51
- streak Streak[]
52
- absences LogAbsence[]
53
-
54
- @@map("users")
55
- @@schema("auth")
56
- }
57
-
58
- // ==========================================
59
- // 2. SCHEMA: CORE
60
- // ==========================================
61
- model CravingLevel {
62
- id String @id @default(uuid()) @db.Uuid
63
- level Int @unique // El valor 1-10
64
- label String @default("") @db.VarChar(50)
65
- description String @default("") @db.Text
66
- recommendation String @default("") @db.Text
67
- daily_logs DailyLog[]
68
-
69
- @@map("craving_levels")
70
- @@schema("core")
71
- }
72
-
73
- model EmotionalState {
74
- id String @id @default(uuid()) @db.Uuid
75
- level Int @unique // El valor 1-10
76
- label String @default("") @db.VarChar(50)
77
- description String @default("") @db.Text
78
- category String @default("") @db.VarChar(50)
79
- daily_logs DailyLog[]
80
-
81
- @@map("emotional_states")
82
- @@schema("core")
83
- }
84
-
85
- model UserAddiction {
86
- id String @id @default(uuid()) @db.Uuid
87
- user_id String @unique @db.Uuid
88
- custom_name String @db.VarChar(100)
89
- classification String @default("") @db.VarChar(50)
90
- is_active Boolean @default(true)
91
- registered_at DateTime @default(now())
92
- created_at DateTime @default(now())
93
-
94
- user User @relation(fields: [user_id], references: [id], onDelete: Cascade)
95
- streak Streak[]
96
- alerts EmergencyAlert[]
97
-
98
- @@map("user_addictions")
99
- @@schema("core")
100
- }
101
-
102
- model Sponsorship {
103
- id String @id @default(uuid()) @db.Uuid
104
- sponsor_id String @unique @default("00000000-0000-0000-0000-000000000000") @db.Uuid
105
- addict_id String @unique @default("00000000-0000-0000-0000-000000000000") @db.Uuid
106
- started_at DateTime @default(now())
107
- ended_at DateTime @default("9999-12-31T23:59:59Z")
108
- status SponsorshipStatus @default(PENDING)
109
- termination_reason String @default("") @db.Text
110
-
111
- created_at DateTime @default(now())
112
-
113
- sponsor User @relation("SponsorRelation", fields: [sponsor_id], references: [id])
114
- addict User @relation("AddictRelation", fields: [addict_id], references: [id])
115
-
116
- @@map("sponsorships")
117
- @@schema("core")
118
- }
119
-
120
- // ==========================================
121
- // 3. SCHEMA: TRACKING
122
- // ==========================================
123
- model DailyLog {
124
- id String @id @default(uuid()) @db.Uuid
125
- user_id String @db.Uuid
126
- log_date DateTime @db.Date
127
- consumed Boolean @default(false)
128
- craving_level_id String @default("00000000-0000-0000-0000-000000000000") @db.Uuid
129
- emotional_state_id String @default("00000000-0000-0000-0000-000000000000") @db.Uuid
130
- triggers String @default("") @db.Text
131
- notes String @default("") @db.Text
132
- created_at DateTime @default(now())
133
-
134
- user User @relation(fields: [user_id], references: [id], onDelete: Cascade)
135
- craving_level CravingLevel @relation(fields: [craving_level_id], references: [id])
136
- emotional_state EmotionalState @relation(fields: [emotional_state_id], references: [id])
137
-
138
- @@unique([user_id, log_date])
139
- @@map("daily_logs")
140
- @@schema("tracking")
141
- }
142
-
143
- model StreakEvent {
144
- id String @id @default(uuid()) @db.Uuid
145
- streak_id String @db.Uuid
146
- emergency_alert_id String @default("00000000-0000-0000-0000-000000000000") @db.Uuid
147
- event_type String @default("") @db.VarChar(20)
148
- event_date DateTime
149
- days_achieved Int @default(0)
150
- avg_craving_period Decimal @default(0.0) @db.Decimal(4, 2)
151
- avg_emotion_period Decimal @default(0.0) @db.Decimal(4, 2)
152
- created_at DateTime @default(now())
153
-
154
- streak Streak @relation(fields: [streak_id], references: [id], onDelete: Cascade)
155
- absences LogAbsence[]
156
-
157
- @@map("streak_events")
158
- @@schema("tracking")
159
- }
160
-
161
- model LogAbsence {
162
- id String @id @default(uuid()) @db.Uuid
163
- user_id String @db.Uuid
164
- streak_id String @db.Uuid
165
- last_log_date DateTime @default("1970-01-01T00:00:00Z") @db.Date
166
- detected_at DateTime @default(now())
167
- absence_hours Int @default(0)
168
- event_generated Boolean @default(false)
169
- streak_event_id String @default("00000000-0000-0000-0000-000000000000") @db.Uuid
170
-
171
- user User @relation(fields: [user_id], references: [id], onDelete: Cascade)
172
- streak_event StreakEvent @relation(fields: [streak_event_id], references: [id])
173
-
174
- @@map("log_absences")
175
- @@schema("tracking")
176
- }
177
-
178
- // ==========================================
179
- // 4. SCHEMA: EMERGENCY
180
- // ==========================================
181
- model SupportContact {
182
- id String @id @default(uuid()) @db.Uuid
183
- user_id String @db.Uuid
184
- contact_name String @db.VarChar(100)
185
- phone String @default("") @db.VarChar(20)
186
- email String @default("") @db.VarChar(150)
187
- relationship String @default("") @db.VarChar(50)
188
- custom_relationship String @default("") @db.Text
189
- is_active Boolean @default(true)
190
- priority_order Int @default(0)
191
- created_at DateTime @default(now())
192
- updated_at DateTime @default(now()) @updatedAt
193
-
194
- user User @relation(fields: [user_id], references: [id], onDelete: Cascade)
195
-
196
- @@map("support_contacts")
197
- @@schema("emergency")
198
- }
199
-
200
- model EmergencyAlert {
201
- id String @id @default(uuid()) @db.Uuid
202
- user_id String @db.Uuid
203
- user_addiction_id String @db.Uuid
204
- activated_at DateTime @default(now())
205
- resulted_in_relapse Boolean @default(false)
206
- resolution_notes String @default("") @db.Text
207
- created_at DateTime @default(now())
208
-
209
- user User @relation(fields: [user_id], references: [id], onDelete: Cascade)
210
- addiction UserAddiction @relation(fields: [user_addiction_id], references: [id])
211
-
212
- @@map("emergency_alerts")
213
- @@schema("emergency")
214
- }
215
-
216
- model Streak {
217
- id String @id @default(uuid()) @db.Uuid
218
- user_id String @unique @db.Uuid
219
- user_addiction_id String @unique @db.Uuid
220
- status String @default("") @db.VarChar(20)
221
- started_at DateTime
222
- day_counter Int @default(0)
223
- last_log_date DateTime @default("1970-01-01T00:00:00Z") @db.Date
224
- updated_at DateTime @default(now()) @updatedAt
225
-
226
- user User @relation(fields: [user_id], references: [id], onDelete: Cascade)
227
- addiction UserAddiction @relation(fields: [user_addiction_id], references: [id], onDelete: Cascade)
228
- events StreakEvent[]
229
-
230
- @@map("streaks")
231
- @@schema("core")
232
- }
1
+ generator client {
2
+ provider = "prisma-client-js"
3
+ previewFeatures = ["multiSchema"]
4
+ }
5
+
6
+ generator zod {
7
+ provider = "zod-prisma-types"
8
+ output = "../src/schemas"
9
+ }
10
+
11
+ datasource db {
12
+ provider = "postgresql"
13
+ schemas = ["auth", "tracking", "emergency", "core"]
14
+ }
15
+
16
+ enum UserRole {
17
+ ADICTO
18
+ PADRINO
19
+ ADMIN
20
+
21
+ @@schema("auth")
22
+ }
23
+
24
+ enum SponsorshipStatus {
25
+ PENDING
26
+ ACTIVE
27
+ INACTIVE
28
+
29
+ @@schema("core")
30
+ }
31
+
32
+ // ==========================================
33
+ // 1. SCHEMA: AUTH
34
+ // ==========================================
35
+ model User {
36
+ id String @id @default(uuid()) @db.Uuid
37
+ name String @db.VarChar(100)
38
+ email String @unique @db.VarChar(150)
39
+ password_hash String @db.Text
40
+ role UserRole @default(ADICTO)
41
+ created_at DateTime @default(now())
42
+ updated_at DateTime @default(now()) @updatedAt
43
+ sponsor_code String? @unique @db.VarChar(10)
44
+
45
+ addictions UserAddiction[]
46
+ daily_logs DailyLog[]
47
+ sponsorships_as_sponsor Sponsorship[] @relation("SponsorRelation")
48
+ sponsorships_as_addict Sponsorship[] @relation("AddictRelation")
49
+ contacts SupportContact[]
50
+ alerts EmergencyAlert[]
51
+ streak Streak[]
52
+ absences LogAbsence[]
53
+
54
+ @@map("users")
55
+ @@schema("auth")
56
+ }
57
+
58
+ // ==========================================
59
+ // 2. SCHEMA: CORE
60
+ // ==========================================
61
+ model CravingLevel {
62
+ id String @id @default(uuid()) @db.Uuid
63
+ level Int @unique // El valor 1-10
64
+ label String @default("") @db.VarChar(50)
65
+ description String @default("") @db.Text
66
+ recommendation String @default("") @db.Text
67
+ daily_logs DailyLog[]
68
+
69
+ @@map("craving_levels")
70
+ @@schema("core")
71
+ }
72
+
73
+ model EmotionalState {
74
+ id String @id @default(uuid()) @db.Uuid
75
+ level Int @unique // El valor 1-10
76
+ label String @default("") @db.VarChar(50)
77
+ description String @default("") @db.Text
78
+ category String @default("") @db.VarChar(50)
79
+ daily_logs DailyLog[]
80
+
81
+ @@map("emotional_states")
82
+ @@schema("core")
83
+ }
84
+
85
+ model UserAddiction {
86
+ id String @id @default(uuid()) @db.Uuid
87
+ user_id String @unique @db.Uuid
88
+ custom_name String @db.VarChar(100)
89
+ classification String @default("") @db.VarChar(50)
90
+ is_active Boolean @default(true)
91
+ registered_at DateTime @default(now())
92
+ created_at DateTime @default(now())
93
+
94
+ user User @relation(fields: [user_id], references: [id], onDelete: Cascade)
95
+ streak Streak[]
96
+ alerts EmergencyAlert[]
97
+
98
+ @@map("user_addictions")
99
+ @@schema("core")
100
+ }
101
+
102
+ model Sponsorship {
103
+ id String @id @default(uuid()) @db.Uuid
104
+ sponsor_id String @unique @default("00000000-0000-0000-0000-000000000000") @db.Uuid
105
+ addict_id String @unique @default("00000000-0000-0000-0000-000000000000") @db.Uuid
106
+ started_at DateTime @default(now())
107
+ ended_at DateTime @default("9999-12-31T23:59:59Z")
108
+ status SponsorshipStatus @default(PENDING)
109
+ termination_reason String @default("") @db.Text
110
+
111
+ created_at DateTime @default(now())
112
+
113
+ sponsor User @relation("SponsorRelation", fields: [sponsor_id], references: [id])
114
+ addict User @relation("AddictRelation", fields: [addict_id], references: [id])
115
+
116
+ @@map("sponsorships")
117
+ @@schema("core")
118
+ }
119
+
120
+ // ==========================================
121
+ // 3. SCHEMA: TRACKING
122
+ // ==========================================
123
+ model DailyLog {
124
+ id String @id @default(uuid()) @db.Uuid
125
+ user_id String @db.Uuid
126
+ log_date DateTime @db.Date
127
+ consumed Boolean @default(false)
128
+ craving_level_id String @db.Uuid
129
+ emotional_state_id String @db.Uuid
130
+ triggers String @default("") @db.Text
131
+ notes String @default("") @db.Text
132
+ created_at DateTime @default(now())
133
+
134
+ user User @relation(fields: [user_id], references: [id], onDelete: Cascade)
135
+ craving_level CravingLevel @relation(fields: [craving_level_id], references: [id])
136
+ emotional_state EmotionalState @relation(fields: [emotional_state_id], references: [id])
137
+
138
+ @@unique([user_id, log_date])
139
+ @@map("daily_logs")
140
+ @@schema("tracking")
141
+ }
142
+
143
+ model StreakEvent {
144
+ id String @id @default(uuid()) @db.Uuid
145
+ streak_id String @db.Uuid
146
+ emergency_alert_id String @default("00000000-0000-0000-0000-000000000000") @db.Uuid
147
+ event_type String @default("") @db.VarChar(20)
148
+ event_date DateTime
149
+ days_achieved Int @default(0)
150
+ avg_craving_period Decimal @default(0.0) @db.Decimal(4, 2)
151
+ avg_emotion_period Decimal @default(0.0) @db.Decimal(4, 2)
152
+ created_at DateTime @default(now())
153
+
154
+ streak Streak @relation(fields: [streak_id], references: [id], onDelete: Cascade)
155
+ absences LogAbsence[]
156
+
157
+ @@map("streak_events")
158
+ @@schema("tracking")
159
+ }
160
+
161
+ model LogAbsence {
162
+ id String @id @default(uuid()) @db.Uuid
163
+ user_id String @db.Uuid
164
+ streak_id String @db.Uuid
165
+ last_log_date DateTime @default("2026-02-08T00:00:00Z") @db.Date
166
+ detected_at DateTime @default(now())
167
+ absence_hours Int @default(0)
168
+ event_generated Boolean @default(false)
169
+ streak_event_id String @default("00000000-0000-0000-0000-000000000000") @db.Uuid
170
+
171
+ user User @relation(fields: [user_id], references: [id], onDelete: Cascade)
172
+ streak_event StreakEvent @relation(fields: [streak_event_id], references: [id])
173
+
174
+ @@map("log_absences")
175
+ @@schema("tracking")
176
+ }
177
+
178
+ // ==========================================
179
+ // 4. SCHEMA: EMERGENCY
180
+ // ==========================================
181
+ model SupportContact {
182
+ id String @id @default(uuid()) @db.Uuid
183
+ user_id String @db.Uuid
184
+ contact_name String @db.VarChar(100)
185
+ phone String @default("") @db.VarChar(20)
186
+ email String @default("") @db.VarChar(150)
187
+ relationship String @default("") @db.VarChar(50)
188
+ custom_relationship String @default("") @db.Text
189
+ is_active Boolean @default(true)
190
+ priority_order Int @default(0)
191
+ created_at DateTime @default(now())
192
+ updated_at DateTime @default(now()) @updatedAt
193
+
194
+ user User @relation(fields: [user_id], references: [id], onDelete: Cascade)
195
+
196
+ @@map("support_contacts")
197
+ @@schema("emergency")
198
+ }
199
+
200
+ model EmergencyAlert {
201
+ id String @id @default(uuid()) @db.Uuid
202
+ user_id String @db.Uuid
203
+ user_addiction_id String @db.Uuid
204
+ activated_at DateTime @default(now())
205
+ resulted_in_relapse Boolean @default(false)
206
+ resolution_notes String @default("") @db.Text
207
+ created_at DateTime @default(now())
208
+
209
+ user User @relation(fields: [user_id], references: [id], onDelete: Cascade)
210
+ addiction UserAddiction @relation(fields: [user_addiction_id], references: [id])
211
+
212
+ @@map("emergency_alerts")
213
+ @@schema("emergency")
214
+ }
215
+
216
+ model Streak {
217
+ id String @id @default(uuid()) @db.Uuid
218
+ user_id String @unique @db.Uuid
219
+ user_addiction_id String @unique @db.Uuid
220
+ status String @default("") @db.VarChar(20)
221
+ started_at DateTime
222
+ day_counter Int @default(0)
223
+ last_log_date DateTime @default("2026-02-08T00:00:00Z") @db.Date
224
+ updated_at DateTime @default(now()) @updatedAt
225
+
226
+ user User @relation(fields: [user_id], references: [id], onDelete: Cascade)
227
+ addiction UserAddiction @relation(fields: [user_addiction_id], references: [id], onDelete: Cascade)
228
+ events StreakEvent[]
229
+
230
+ @@map("streaks")
231
+ @@schema("core")
232
+ }