@prisma-psm/core 1.0.5 → 1.0.6
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/README.en.md +189 -0
- package/README.md +98 -99
- package/README.pt.md +196 -0
- package/package.json +6 -3
- package/src/configs.d.ts +2 -0
- package/src/configs.d.ts.map +1 -1
- package/src/configs.ts +2 -0
- package/src/driver.d.ts +26 -7
- package/src/driver.d.ts.map +1 -1
- package/src/driver.ts +33 -4
- package/src/launcher/commands/{migrate.d.ts → commit.d.ts} +1 -1
- package/src/launcher/commands/commit.d.ts.map +1 -0
- package/src/launcher/commands/{migrate.js → commit.js} +8 -6
- package/src/launcher/commands/commit.js.map +1 -0
- package/src/launcher/commands/{migrate.ts → commit.ts} +6 -5
- package/src/launcher/commands/deploy.d.ts.map +1 -1
- package/src/launcher/commands/deploy.js +11 -3
- package/src/launcher/commands/deploy.js.map +1 -1
- package/src/launcher/commands/deploy.ts +11 -4
- package/src/launcher/commands/generate.d.ts.map +1 -1
- package/src/launcher/commands/generate.js +1 -1
- package/src/launcher/commands/generate.js.map +1 -1
- package/src/launcher/commands/generate.ts +1 -2
- package/src/launcher/index.js +25 -3
- package/src/launcher/index.js.map +1 -1
- package/src/launcher/index.ts +1 -4
- package/src/tools/deploy.d.ts +1 -0
- package/src/tools/deploy.d.ts.map +1 -1
- package/src/tools/deploy.js +151 -0
- package/src/tools/deploy.js.map +1 -1
- package/src/tools/deploy.ts +135 -0
- package/src/tools/generate.d.ts.map +1 -1
- package/src/tools/generate.js +9 -4
- package/src/tools/generate.js.map +1 -1
- package/src/tools/generate.ts +10 -5
- package/src/tools/migrate.d.ts.map +1 -1
- package/src/tools/migrate.js +22 -4
- package/src/tools/migrate.js.map +1 -1
- package/src/tools/migrate.ts +25 -5
- package/src/launcher/commands/migrate.d.ts.map +0 -1
- package/src/launcher/commands/migrate.js.map +0 -1
package/README.en.md
ADDED
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
# PSM - Prisma Safe Migrate
|
|
2
|
+
|
|
3
|
+
## Description
|
|
4
|
+
|
|
5
|
+
**PSM (Prisma Safe Migrate)** is an advanced tool for generating and safely applying SQL migrations based on the Prisma model. Its main objective is to ensure that database changes are applied without risk of data loss, something that Prisma's standard migration system does not fully guarantee.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Motivation
|
|
10
|
+
|
|
11
|
+
Database migrations are critical processes that need to preserve the integrity of existing data. Prisma provides an efficient migration system, but it does not guarantee absolute data loss due to complex changes, such as renaming columns, changing data types, or dropping tables.
|
|
12
|
+
|
|
13
|
+
PSM fills this gap by creating an extra layer of validation, strict revision control, and safe incremental application in production environments.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Installation
|
|
18
|
+
|
|
19
|
+
Install the PSM packages as development dependencies in your project:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm install --save-dev @prisma-psm/core @prisma-psm/pg
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Configuration
|
|
28
|
+
|
|
29
|
+
In your `schema.prisma` file, configure the PSM generator to generate the SQL files and connect to the database:
|
|
30
|
+
|
|
31
|
+
```prisma
|
|
32
|
+
generator psm {
|
|
33
|
+
provider = "psm generate"
|
|
34
|
+
output = "./psm/"
|
|
35
|
+
driver = "@prisma-psm/pg"
|
|
36
|
+
url = env("DATABASE_URL")
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
- **provider**: PSM generator that replaces Prisma's default migration generator.
|
|
41
|
+
- **output**: directory where the SQL files and PSM artifacts will be generated. - **driver**: Database-specific driver (e.g., PostgreSQL).
|
|
42
|
+
- **url**: Environment variable containing the database connection string.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## How it works - General flow
|
|
47
|
+
|
|
48
|
+
### 1. Migration generation (`npx prisma generate`)
|
|
49
|
+
|
|
50
|
+
- Generates Prisma artifacts normally.
|
|
51
|
+
- Generates two main files in the `next` folder:
|
|
52
|
+
- `migration.next.check.sql`: Script to validate whether the migration is consistent with the current database.
|
|
53
|
+
- `migration.next.sql`: Script that will apply the changes.
|
|
54
|
+
- If `DATABASE_URL` is configured:
|
|
55
|
+
- Automatically executes the check script.
|
|
56
|
+
- If successful: Keeps both files in the `next` folder.
|
|
57
|
+
- If failed: Keeps only `migration.next.check.sql` and an error file, removing `migration.next.sql` if it exists. - If `DATABASE_URL` is not defined:
|
|
58
|
+
- Only generates both files, without validating.
|
|
59
|
+
- Updates the `psm.yml` file with migration information, such as status, driver, URL, schema, and history.
|
|
60
|
+
|
|
61
|
+
### 2. Applying the migration (`psm commit`)
|
|
62
|
+
|
|
63
|
+
- Validates the migration again by running `migration.next.check.sql`.
|
|
64
|
+
- If validated:
|
|
65
|
+
- Applies `migration.next.sql` to the database.
|
|
66
|
+
- Generates a definitive revision in `revision/${timestamp}-${label}/` with:
|
|
67
|
+
- Applied migration script.
|
|
68
|
+
- Updated `psm.yml` file.
|
|
69
|
+
- Registers the applied migration in the database for control.
|
|
70
|
+
- If failure occurs, abort and display the error.
|
|
71
|
+
|
|
72
|
+
### 3. Deploy to production (`psm deploy`)
|
|
73
|
+
|
|
74
|
+
- Applies all pending revisions stored in the `revision/` folder incrementally. - Ensures the database is always synchronized with the migration history.
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Detailed Migration Engine
|
|
79
|
+
|
|
80
|
+
PSM uses a temporary shadow schema to ensure data security:
|
|
81
|
+
|
|
82
|
+
1. Creates a temporary schema `shadow_${random}`.
|
|
83
|
+
2. Creates temporary tables for each Prisma model, without constraints (e.g., `temp_1_user` for the `user` model).
|
|
84
|
+
3. Copies data from the real tables to the temporary tables.
|
|
85
|
+
4. Applies constraints (keys, indexes, relationships) to the temporary tables.
|
|
86
|
+
5. If everything passes during validation (check):
|
|
87
|
+
- Removes the shadow schema and temporary tables.
|
|
88
|
+
6. If everything passes during application (migrate next):
|
|
89
|
+
- Removes the real tables.
|
|
90
|
+
- Moves the temporary tables from the shadow schema to the final schema.
|
|
91
|
+
- Renames the temporary tables to their real names.
|
|
92
|
+
- Removes the shadow schema. - Records the applied migration in the database for control purposes.
|
|
93
|
+
|
|
94
|
+
This process prevents direct destructive changes to the actual tables before full validation, preventing data loss.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Generated file structure
|
|
99
|
+
|
|
100
|
+
- **next/**
|
|
101
|
+
- `migration.next.check.sql` — script to validate the migration.
|
|
102
|
+
- `migration.next.sql` — script to apply the migration.
|
|
103
|
+
- (optional) error file in case of failure.
|
|
104
|
+
- **revision/${timestamp}-${label}/**
|
|
105
|
+
- `migration.sql` — final migration script.
|
|
106
|
+
- `psm.yml` — metadata and history of the applied migration.
|
|
107
|
+
- **psm.yml**
|
|
108
|
+
- Main file with status, configurations, history, and validation results.
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## Environment Variable
|
|
113
|
+
|
|
114
|
+
Configure the connection to your database in the `.env` file or in the environment:
|
|
115
|
+
|
|
116
|
+
```env
|
|
117
|
+
DATABASE_URL="postgresql://username:password@localhost:5432/yourbank"
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
## Main Commands
|
|
122
|
+
|
|
123
|
+
| Command | Description |
|
|
124
|
+
|----------------------|------------------------------------------------------------------------|
|
|
125
|
+
| `npx prisma generate` | Generates the migration files in the `next` folder and validates them (if `DATABASE_URL` is set). |
|
|
126
|
+
| `psm commit` | Validates and applies the next migration. Creates the final revision in the `revision/` folder. |
|
|
127
|
+
| `psm deploy` | Applies all pending migrations from the `revision/` folder in the correct order. |
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Usage Example
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
# Generate migration and validate (if DATABASE_URL is set)
|
|
135
|
+
npx prisma generate
|
|
136
|
+
|
|
137
|
+
# Validate and apply the generated migration
|
|
138
|
+
psm commit
|
|
139
|
+
|
|
140
|
+
# Apply all pending migrations in production
|
|
141
|
+
psm deploy
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## Benefits
|
|
147
|
+
|
|
148
|
+
- **Data loss guarantee** with strict validation. - Easy rollback and revision control.
|
|
149
|
+
- Automatic validation during migration generation.
|
|
150
|
+
- Detailed history of applied changes.
|
|
151
|
+
- Initial support for PostgreSQL, with expansion options.
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## Roadmap
|
|
156
|
+
|
|
157
|
+
- Support for more databases (MySQL, SQLite, etc.).
|
|
158
|
+
- Graphical interface for migration management.
|
|
159
|
+
- Integration with CI/CD pipelines.
|
|
160
|
+
- Manual and custom migrations.
|
|
161
|
+
- Multi-schema and multi-tenant support.
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## Contribution
|
|
166
|
+
|
|
167
|
+
Contributions are welcome! Open issues for bugs or suggestions, and send pull requests for improvements.
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## License
|
|
172
|
+
|
|
173
|
+
Project licensed under [Apache 2.0](./LICENSE).
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## Traduções
|
|
178
|
+
|
|
179
|
+
[Português](./README.pt.md) | [English](./README.en.md)
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## Contact
|
|
184
|
+
|
|
185
|
+
For questions, suggestions, or support, open an issue or contact us via email.
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
**PSM - Safe and reliable migrations for your database with Prisma.**
|
package/README.md
CHANGED
|
@@ -1,23 +1,22 @@
|
|
|
1
|
-
|
|
2
1
|
# PSM - Prisma Safe Migrate
|
|
3
2
|
|
|
4
|
-
##
|
|
3
|
+
## Description
|
|
5
4
|
|
|
6
|
-
**PSM (Prisma Safe Migrate)**
|
|
5
|
+
**PSM (Prisma Safe Migrate)** is an advanced tool for generating and safely applying SQL migrations based on the Prisma model. Its main objective is to ensure that database changes are applied without risk of data loss, something that Prisma's standard migration system does not fully guarantee.
|
|
7
6
|
|
|
8
7
|
---
|
|
9
8
|
|
|
10
|
-
##
|
|
9
|
+
## Motivation
|
|
11
10
|
|
|
12
|
-
|
|
11
|
+
Database migrations are critical processes that need to preserve the integrity of existing data. Prisma provides an efficient migration system, but it does not guarantee absolute data loss due to complex changes, such as renaming columns, changing data types, or dropping tables.
|
|
13
12
|
|
|
14
|
-
|
|
13
|
+
PSM fills this gap by creating an extra layer of validation, strict revision control, and safe incremental application in production environments.
|
|
15
14
|
|
|
16
15
|
---
|
|
17
16
|
|
|
18
|
-
##
|
|
17
|
+
## Installation
|
|
19
18
|
|
|
20
|
-
|
|
19
|
+
Install the PSM packages as development dependencies in your project:
|
|
21
20
|
|
|
22
21
|
```bash
|
|
23
22
|
npm install --save-dev @prisma-psm/core @prisma-psm/pg
|
|
@@ -25,166 +24,166 @@ npm install --save-dev @prisma-psm/core @prisma-psm/pg
|
|
|
25
24
|
|
|
26
25
|
---
|
|
27
26
|
|
|
28
|
-
##
|
|
27
|
+
## Configuration
|
|
29
28
|
|
|
30
|
-
|
|
29
|
+
In your `schema.prisma` file, configure the PSM generator to generate the SQL files and connect to the database:
|
|
31
30
|
|
|
32
31
|
```prisma
|
|
33
32
|
generator psm {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
provider = "psm generate"
|
|
34
|
+
output = "./psm/"
|
|
35
|
+
driver = "@prisma-psm/pg"
|
|
36
|
+
url = env("DATABASE_URL")
|
|
38
37
|
}
|
|
39
38
|
```
|
|
40
39
|
|
|
41
|
-
- **provider**:
|
|
42
|
-
- **output**:
|
|
43
|
-
- **
|
|
44
|
-
- **url**: variável de ambiente contendo a string de conexão ao banco.
|
|
40
|
+
- **provider**: PSM generator that replaces Prisma's default migration generator.
|
|
41
|
+
- **output**: directory where the SQL files and PSM artifacts will be generated. - **driver**: Database-specific driver (e.g., PostgreSQL).
|
|
42
|
+
- **url**: Environment variable containing the database connection string.
|
|
45
43
|
|
|
46
44
|
---
|
|
47
45
|
|
|
48
|
-
##
|
|
46
|
+
## How it works - General flow
|
|
49
47
|
|
|
50
|
-
### 1.
|
|
48
|
+
### 1. Migration generation (`npx prisma generate`)
|
|
51
49
|
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
-
|
|
61
|
-
|
|
62
|
-
- Atualiza o arquivo `psm.yml` com informações da migração, como status, driver, URL, esquema, e histórico.
|
|
50
|
+
- Generates Prisma artifacts normally.
|
|
51
|
+
- Generates two main files in the `next` folder:
|
|
52
|
+
- `migration.next.check.sql`: Script to validate whether the migration is consistent with the current database.
|
|
53
|
+
- `migration.next.sql`: Script that will apply the changes.
|
|
54
|
+
- If `DATABASE_URL` is configured:
|
|
55
|
+
- Automatically executes the check script.
|
|
56
|
+
- If successful: Keeps both files in the `next` folder.
|
|
57
|
+
- If failed: Keeps only `migration.next.check.sql` and an error file, removing `migration.next.sql` if it exists. - If `DATABASE_URL` is not defined:
|
|
58
|
+
- Only generates both files, without validating.
|
|
59
|
+
- Updates the `psm.yml` file with migration information, such as status, driver, URL, schema, and history.
|
|
63
60
|
|
|
64
|
-
### 2.
|
|
61
|
+
### 2. Applying the migration (`psm commit`)
|
|
65
62
|
|
|
66
|
-
-
|
|
67
|
-
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
-
|
|
63
|
+
- Validates the migration again by running `migration.next.check.sql`.
|
|
64
|
+
- If validated:
|
|
65
|
+
- Applies `migration.next.sql` to the database.
|
|
66
|
+
- Generates a definitive revision in `revision/${timestamp}-${label}/` with:
|
|
67
|
+
- Applied migration script.
|
|
68
|
+
- Updated `psm.yml` file.
|
|
69
|
+
- Registers the applied migration in the database for control.
|
|
70
|
+
- If failure occurs, abort and display the error.
|
|
74
71
|
|
|
75
|
-
### 3. Deploy
|
|
72
|
+
### 3. Deploy to production (`psm deploy`)
|
|
76
73
|
|
|
77
|
-
-
|
|
78
|
-
- Garante que o banco esteja sempre sincronizado com o histórico de migrações.
|
|
74
|
+
- Applies all pending revisions stored in the `revision/` folder incrementally. - Ensures the database is always synchronized with the migration history.
|
|
79
75
|
|
|
80
76
|
---
|
|
81
77
|
|
|
82
|
-
##
|
|
78
|
+
## Detailed Migration Engine
|
|
83
79
|
|
|
84
|
-
|
|
80
|
+
PSM uses a temporary shadow schema to ensure data security:
|
|
85
81
|
|
|
86
|
-
1.
|
|
87
|
-
2.
|
|
88
|
-
3.
|
|
89
|
-
4.
|
|
90
|
-
5.
|
|
91
|
-
|
|
92
|
-
6.
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
- Registra a migração aplicada no banco para controle.
|
|
82
|
+
1. Creates a temporary schema `shadow_${random}`.
|
|
83
|
+
2. Creates temporary tables for each Prisma model, without constraints (e.g., `temp_1_user` for the `user` model).
|
|
84
|
+
3. Copies data from the real tables to the temporary tables.
|
|
85
|
+
4. Applies constraints (keys, indexes, relationships) to the temporary tables.
|
|
86
|
+
5. If everything passes during validation (check):
|
|
87
|
+
- Removes the shadow schema and temporary tables.
|
|
88
|
+
6. If everything passes during application (migrate next):
|
|
89
|
+
- Removes the real tables.
|
|
90
|
+
- Moves the temporary tables from the shadow schema to the final schema.
|
|
91
|
+
- Renames the temporary tables to their real names.
|
|
92
|
+
- Removes the shadow schema. - Records the applied migration in the database for control purposes.
|
|
98
93
|
|
|
99
|
-
|
|
94
|
+
This process prevents direct destructive changes to the actual tables before full validation, preventing data loss.
|
|
100
95
|
|
|
101
96
|
---
|
|
102
97
|
|
|
103
|
-
##
|
|
98
|
+
## Generated file structure
|
|
104
99
|
|
|
105
100
|
- **next/**
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
101
|
+
- `migration.next.check.sql` — script to validate the migration.
|
|
102
|
+
- `migration.next.sql` — script to apply the migration.
|
|
103
|
+
- (optional) error file in case of failure.
|
|
109
104
|
- **revision/${timestamp}-${label}/**
|
|
110
|
-
|
|
111
|
-
|
|
105
|
+
- `migration.sql` — final migration script.
|
|
106
|
+
- `psm.yml` — metadata and history of the applied migration.
|
|
112
107
|
- **psm.yml**
|
|
113
|
-
|
|
108
|
+
- Main file with status, configurations, history, and validation results.
|
|
114
109
|
|
|
115
110
|
---
|
|
116
111
|
|
|
117
|
-
##
|
|
112
|
+
## Environment Variable
|
|
118
113
|
|
|
119
|
-
Configure
|
|
114
|
+
Configure the connection to your database in the `.env` file or in the environment:
|
|
120
115
|
|
|
121
116
|
```env
|
|
122
|
-
DATABASE_URL="postgresql://
|
|
117
|
+
DATABASE_URL="postgresql://username:password@localhost:5432/yourbank"
|
|
123
118
|
```
|
|
124
119
|
|
|
125
120
|
---
|
|
121
|
+
## Main Commands
|
|
126
122
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
|
130
|
-
|
|
131
|
-
| `
|
|
132
|
-
| `psm migrate commit` | Valida e aplica a próxima migração. Cria revisão definitiva na pasta `revision/`. |
|
|
133
|
-
| `psm migrate deploy` | Aplica todas as migrações pendentes da pasta `revision/` na ordem correta. |
|
|
123
|
+
| Command | Description |
|
|
124
|
+
|-----------------------|------------------------------------------------------------------------|
|
|
125
|
+
| `npx prisma generate` | Generates the migration files in the `next` folder and validates them (if `DATABASE_URL` is set). |
|
|
126
|
+
| `psm commit` | Validates and applies the next migration. Creates the final revision in the `revision/` folder. |
|
|
127
|
+
| `psm deploy` | Applies all pending migrations from the `revision/` folder in the correct order. |
|
|
134
128
|
|
|
135
129
|
---
|
|
136
130
|
|
|
137
|
-
##
|
|
131
|
+
## Usage Example
|
|
138
132
|
|
|
139
133
|
```bash
|
|
140
|
-
#
|
|
134
|
+
# Generate migration and validate (if DATABASE_URL is set)
|
|
141
135
|
npx prisma generate
|
|
142
136
|
|
|
143
|
-
#
|
|
144
|
-
psm
|
|
137
|
+
# Validate and apply the generated migration
|
|
138
|
+
psm commit
|
|
145
139
|
|
|
146
|
-
#
|
|
147
|
-
psm
|
|
140
|
+
# Apply all pending migrations in production
|
|
141
|
+
psm deploy
|
|
148
142
|
```
|
|
149
143
|
|
|
150
144
|
---
|
|
151
145
|
|
|
152
|
-
##
|
|
146
|
+
## Benefits
|
|
153
147
|
|
|
154
|
-
- **
|
|
155
|
-
-
|
|
156
|
-
-
|
|
157
|
-
-
|
|
158
|
-
- **Suporte inicial para PostgreSQL**, com possibilidade de expansão.
|
|
148
|
+
- **Data loss guarantee** with strict validation. - Easy rollback and revision control.
|
|
149
|
+
- Automatic validation during migration generation.
|
|
150
|
+
- Detailed history of applied changes.
|
|
151
|
+
- Initial support for PostgreSQL, with expansion options.
|
|
159
152
|
|
|
160
153
|
---
|
|
161
154
|
|
|
162
155
|
## Roadmap
|
|
163
156
|
|
|
164
|
-
-
|
|
165
|
-
-
|
|
166
|
-
-
|
|
167
|
-
-
|
|
168
|
-
-
|
|
157
|
+
- Support for more databases (MySQL, SQLite, etc.).
|
|
158
|
+
- Graphical interface for migration management.
|
|
159
|
+
- Integration with CI/CD pipelines.
|
|
160
|
+
- Manual and custom migrations.
|
|
161
|
+
- Multi-schema and multi-tenant support.
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## Contribution
|
|
166
|
+
|
|
167
|
+
Contributions are welcome! Open issues for bugs or suggestions, and send pull requests for improvements.
|
|
169
168
|
|
|
170
169
|
---
|
|
171
170
|
|
|
172
|
-
##
|
|
171
|
+
## License
|
|
173
172
|
|
|
174
|
-
|
|
173
|
+
Project licensed under [Apache 2.0](./LICENSE).
|
|
175
174
|
|
|
176
175
|
---
|
|
177
176
|
|
|
178
|
-
##
|
|
177
|
+
## Traduções
|
|
179
178
|
|
|
180
|
-
|
|
179
|
+
[Português](./README.pt.md) | [English](./README.en.md)
|
|
181
180
|
|
|
182
181
|
---
|
|
183
182
|
|
|
184
|
-
##
|
|
183
|
+
## Contact
|
|
185
184
|
|
|
186
|
-
|
|
185
|
+
For questions, suggestions, or support, open an issue or contact us via email.
|
|
187
186
|
|
|
188
187
|
---
|
|
189
188
|
|
|
190
|
-
**PSM -
|
|
189
|
+
**PSM - Safe and reliable migrations for your database with Prisma.**
|