Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/rebase beta branch #20

Merged
merged 56 commits into from
Sep 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
dd09dac
Test implementation
Sukairo-02 Aug 26, 2024
25d3753
Type-level implementation
Sukairo-02 Aug 26, 2024
8439bf1
Added functional runtimes for node-pg, aws-data-api-pg [custom drizzl…
Sukairo-02 Aug 26, 2024
f2115f8
Resolved bun type related build issues
Sukairo-02 Aug 26, 2024
ab07dd7
Implemented extra drivers
Sukairo-02 Aug 26, 2024
5f49379
Complete runtime implementations [TO BE TESTED]
Sukairo-02 Aug 26, 2024
45d2d13
Prototype implementation
Sukairo-02 Aug 27, 2024
be0aab2
switched bun to dynamic imports
Sukairo-02 Aug 27, 2024
936b319
Removed static imports, removed promise wrapper
Sukairo-02 Aug 27, 2024
493dd13
Returned async imports due to conflicts
Sukairo-02 Aug 27, 2024
6c6394d
More comnprehensive import errors
Sukairo-02 Aug 27, 2024
1b580d8
Changed error messge
Sukairo-02 Aug 28, 2024
b6b8258
Improved params destructurization
Sukairo-02 Aug 29, 2024
4f7d703
Functional prototype of SQLite $count
Sukairo-02 Sep 2, 2024
e009be7
Added pg, mysql; Added tests, type tests for $count
Sukairo-02 Sep 2, 2024
672b441
Added missing runtime tests
Sukairo-02 Sep 4, 2024
951e549
LibSQL improvements
AleksandrSherman Aug 12, 2024
0b768d4
- updated tests
AleksandrSherman Aug 12, 2024
7239e9f
- handled foreign keys for recreate table
AleksandrSherman Aug 15, 2024
b0cf555
changed package json to prev state
AleksandrSherman Aug 15, 2024
8d62f90
updated tests
AleksandrSherman Aug 16, 2024
ec4420e
- moved 'turso' driver to dialect
AleksandrSherman Sep 2, 2024
15c6b1a
fixed dialects in introspect musql, psql, sqlite
AleksandrSherman Sep 2, 2024
deb7533
updated tests and removed pragma from push in libsql
AleksandrSherman Sep 2, 2024
380a4ce
removed console.log
AleksandrSherman Sep 2, 2024
9b68f3d
updated pull config
AleksandrSherman Sep 3, 2024
7790983
removed driver
AleksandrSherman Sep 3, 2024
d954a4b
updated sqlite connection to libsql
AleksandrSherman Sep 4, 2024
482cdce
Added alternate config for better-sqlite3, bun:sqlite; Renamed bun-sq…
Sukairo-02 Sep 2, 2024
b40b752
Added monomigrator
Sukairo-02 Sep 2, 2024
ccac440
Changed style of monodriver, monomigrator function args
Sukairo-02 Sep 3, 2024
79b2dd9
Fixed overload order for better autocomplete
Sukairo-02 Sep 3, 2024
977fdd2
Removed garbage
Sukairo-02 Sep 3, 2024
3430e1c
Added missing postgres.js to monomigrator
Sukairo-02 Sep 3, 2024
56f7b16
Fixed missing defaults in templates
Sukairo-02 Sep 3, 2024
091a8f4
Improved types, matched supported instances of monodriver and monomig…
Sukairo-02 Sep 4, 2024
9af5fec
Fixed invalid [entityKind] call
Sukairo-02 Sep 4, 2024
ca04053
Added `:memory:` autocomplete
Sukairo-02 Sep 4, 2024
1e1d8ae
Removed leftover code from overloads, added `assertUnreachable`
Sukairo-02 Sep 4, 2024
1de8bf8
Exposed db drivers from monodriver
Sukairo-02 Sep 4, 2024
0f81774
Fixed test tables using already existing names
Sukairo-02 Sep 4, 2024
f027500
Fixed faulty test cases; Fixed lack of count type conversion in mysql…
Sukairo-02 Sep 4, 2024
8903755
Switched mysql count to execute
Sukairo-02 Sep 4, 2024
a171311
Added cast to embedded
Sukairo-02 Sep 4, 2024
4f9c076
Switched to `.execute` for mysql, pg; reverted pg proxy session chang…
Sukairo-02 Sep 5, 2024
99795fa
Moved type conversion drom db to ORM; improved types
Sukairo-02 Sep 5, 2024
0105349
Moved pg, mysql counts to sessions to resolve return shape conflicts
Sukairo-02 Sep 5, 2024
865fc07
Fixed neon-http, planetscale; removed leftover lines; switched sqlite…
Sukairo-02 Sep 5, 2024
b60aa98
changed console.log outputs for connection to Sqlite
AleksandrSherman Sep 5, 2024
388d422
Add draft for beta release
AndriiSherman Sep 6, 2024
6d413df
Add release notes for orm and kit
AndriiSherman Sep 9, 2024
d5a0238
Update release notes
AndriiSherman Sep 11, 2024
c38333a
add singlestore dialect to drizzle-kit
Rodriguespn Aug 8, 2024
f86f5a1
create new singlestore-schemas.test.ts file
Rodriguespn Aug 8, 2024
f32c8b8
lint fix on drizzle-kit files
Rodriguespn Aug 13, 2024
28876e6
adding missing driver declaration in drizzle-orm
Rodriguespn Sep 20, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
144 changes: 144 additions & 0 deletions changelogs/drizzle-kit/0.25.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
## Breaking changes and migrate guide for Turso users

If you are using Turso and libsql, you will need to upgrade your `drizzle.config` and `@libsql/client` package.

1. This version of drizzle-orm will only work with `@libsql/[email protected]` or higher if you are using the `migrate` function. For other use cases, you can continue using previous versions(But the suggestion is to upgrade)
To install the latest version, use the command:

```bash
npm i @libsql/client@latest
```

2. Previously, we had a common `drizzle.config` for SQLite and Turso users, which allowed a shared strategy for both dialects. Starting with this release, we are introducing the turso dialect in drizzle-kit. We will evolve and improve Turso as a separate dialect with its own migration strategies.

**Before**

```ts
import { defineConfig } from "drizzle-kit";

export default defineConfig({
dialect: "sqlite",
schema: "./schema.ts",
out: "./drizzle",
dbCredentials: {
url: "database.db",
},
breakpoints: true,
verbose: true,
strict: true,
});
```

**After**

```ts
import { defineConfig } from "drizzle-kit";

export default defineConfig({
dialect: "turso",
schema: "./schema.ts",
out: "./drizzle",
dbCredentials: {
url: "database.db",
},
breakpoints: true,
verbose: true,
strict: true,
});
```

If you are using only SQLite, you can use `dialect: "sqlite"`

## LibSQL/Turso and Sqlite migration updates

### SQLite "generate" and "push" statements updates

Starting from this release, we will no longer generate comments like this:

```sql
'/*\n SQLite does not support "Changing existing column type" out of the box, we do not generate automatic migration for that, so it has to be done manually'
+ '\n Please refer to: https://www.techonthenet.com/sqlite/tables/alter_table.php'
+ '\n https://www.sqlite.org/lang_altertable.html'
+ '\n https://stackoverflow.com/questions/2083543/modify-a-columns-type-in-sqlite3'
+ "\n\n Due to that we don't generate migration automatically and it has to be done manually"
+ '\n*/'
```

We will generate a set of statements, and you can decide if it's appropriate to create data-moving statements instead. Here is an example of the SQL file you'll receive now:

```sql
PRAGMA foreign_keys=OFF;
--> statement-breakpoint
CREATE TABLE `__new_worker` (
`id` integer PRIMARY KEY NOT NULL,
`name` text NOT NULL,
`salary` text NOT NULL,
`job_id` integer,
FOREIGN KEY (`job_id`) REFERENCES `job`(`id`) ON UPDATE no action ON DELETE no action
);
--> statement-breakpoint
INSERT INTO `__new_worker`("id", "name", "salary", "job_id") SELECT "id", "name", "salary", "job_id" FROM `worker`;
--> statement-breakpoint
DROP TABLE `worker`;
--> statement-breakpoint
ALTER TABLE `__new_worker` RENAME TO `worker`;
--> statement-breakpoint
PRAGMA foreign_keys=ON;
```

### LibSQL/Turso "generate" and "push" statements updates

Since LibSQL supports more ALTER statements than SQLite, we can generate more statements without recreating your schema and moving all the data, which can be potentially dangerous for production environments.

LibSQL and Turso will now have a separate dialect in the Drizzle config file, meaning that we will evolve Turso and LibSQL independently from SQLite and will aim to support as many features as Turso/LibSQL offer.

With the updated LibSQL migration strategy, you will have the ability to:

- **Change Data Type**: Set a new data type for existing columns.
- **Set and Drop Default Values**: Add or remove default values for existing columns.
- **Set and Drop NOT NULL**: Add or remove the NOT NULL constraint on existing columns.
- **Add References to Existing Columns**: Add foreign key references to existing columns

You can find more information in the [LibSQL documentation](https://github.com/tursodatabase/libsql/blob/main/libsql-sqlite3/doc/libsql_extensions.md#altering-columns)

### LIMITATIONS

- Dropping or altering an index will cause table recreation.

This is because LibSQL/Turso does not support dropping this type of index.

```sql
CREATE TABLE `users` (
`id` integer NOT NULL,
`name` integer,
`age` integer PRIMARY KEY NOT NULL
FOREIGN KEY (`name`) REFERENCES `users1`("id") ON UPDATE no action ON DELETE no action
);
```

- If the table has indexes, altering columns will cause table recreation.
- Drizzle-Kit will drop the indexes, modify the columns, and then recreate the indexes.
- Adding or dropping composite foreign keys is not supported and will cause table recreation

### NOTES

- You can create a reference on any column type, but if you want to insert values, the referenced column must have a unique index or primary key.

```sql
CREATE TABLE parent(a PRIMARY KEY, b UNIQUE, c, d, e, f);
CREATE UNIQUE INDEX i1 ON parent(c, d);
CREATE INDEX i2 ON parent(e);
CREATE UNIQUE INDEX i3 ON parent(f COLLATE nocase);

CREATE TABLE child1(f, g REFERENCES parent(a)); -- Ok
CREATE TABLE child2(h, i REFERENCES parent(b)); -- Ok
CREATE TABLE child3(j, k, FOREIGN KEY(j, k) REFERENCES parent(c, d)); -- Ok
CREATE TABLE child4(l, m REFERENCES parent(e)); -- Error!
CREATE TABLE child5(n, o REFERENCES parent(f)); -- Error!
CREATE TABLE child6(p, q, FOREIGN KEY(p, q) REFERENCES parent(b, c)); -- Error!
CREATE TABLE child7(r REFERENCES parent(c)); -- Error!
```

> **NOTE**: The foreign key for the table child5 is an error because, although the parent key column has a unique index, the index uses a different collating sequence.

See more: https://www.sqlite.org/foreignkeys.html
Loading
Loading