Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
145 changes: 145 additions & 0 deletions changelogs/drizzle-seed/0.3.2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
## Bug fixes

- https://github.com/drizzle-team/drizzle-orm/issues/3914

Both the `seed` and `reset` functions didn't include `LibSQLDatabase<any>` in their generic type parameters.
As a result, the `seed` function accepts a `db` parameter like this:

```ts
import { drizzle } from "drizzle-orm/libsql";
import * as schema from "./schema.ts";

const db = drizzle({
connection: {
url: "",
authToken: "",
},
});

await seed(db, schema);
```

But it will reject a `db` parameter defined like this:

```ts
import { drizzle } from "drizzle-orm/libsql";
import * as schema from "./schema.ts";

const db = drizzle({
schema,
connection: {
url: "",
authToken: "",
},
});

await seed(db, schema);
```

- https://github.com/drizzle-team/drizzle-orm/issues/4194

drizzle-seed misinterpreted `realEstateTypeEnum` enum as a `real` type.

- https://github.com/drizzle-team/drizzle-orm/issues/3915

drizzle seed breaks serial sequence sync with Postgres serial type.

## Features

- ignore column in refinements

Now you can let drizzle-seed know if you want to ignore column during seeding.

```ts
// schema.ts
import { integer, pgTable, text } from "drizzle-orm/pg-core";

export const users = pgTable("users", {
id: integer().primaryKey(),
name: text().notNull(),
age: integer(),
photo: text(),
});
```

```ts
// index.ts
import { drizzle } from "drizzle-orm/node-postgres";
import { seed } from "drizzle-seed";
import * as schema from "./schema.ts";

async function main() {
const db = drizzle(process.env["DATABASE_URL"]!);
await seed(db, schema).refine((f) => ({
users: {
count: 5,
columns: {
name: f.fullName(),
photo: false, // the photo column will not be seeded, allowing the database to use its default value.
},
},
}));
}

main();
```

## Improvements

- added minTime, maxTime parameters to `time` generator

```ts
await seed(db, { timeTable: schema.timeTable }).refine((funcs) => ({
timeTable: {
count,
columns: {
time: funcs.time({
minTime: "13:12:13",
maxTime: "15:12:13",
}),
},
},
}));
```

- added minTimestamp, maxTimestamp parameters to `timestamp` generator

```ts
await seed(db, { timestampTable: schema.timestampTable }).refine((funcs) => ({
timestampTable: {
count,
columns: {
timestamp: funcs.timestamp({
minTimestamp: "2025-03-07 13:12:13.123Z",
maxTimestamp: "2025-03-09 15:12:13.456Z",
}),
},
},
}));
```

- added minDatetime, maxDatetime parameters to `datetime` generator

```ts
await seed(db, { datetimeTable: schema.datetimeTable }).refine((funcs) => ({
datetimeTable: {
count,
columns: {
datetime: funcs.datetime({
minDatetime: "2025-03-07 13:12:13Z",
maxDatetime: "2025-03-09 15:12:13Z",
}),
},
},
}));
```

- exported `AbstractGenerator` so that users can build their own custom generator classes.

- drizzle-seed now updates PostgreSQL sequences after seeding.

drizzle-seed iterates through each column in a table, selects columns of type smallint, integer, bigint, smallserial, serial, or bigserial, and (if a sequence exists) updates it to the column’s maximum seeded value.

```sql
select setval(pg_get_serial_sequence('"schema_name"."table_name"', 'column_name'), 3, true);
```
168 changes: 168 additions & 0 deletions changelogs/drizzle-seed/1.0.0-beta.8.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
## Bug fixes

- [[BUG]: drizzle seed doesn't work with libSQL](https://github.com/drizzle-team/drizzle-orm/issues/3914)
- [[BUG]: Seed UUIDs not compatible with Zod/v4](https://github.com/drizzle-team/drizzle-orm/issues/4551)
- [[BUG]: drizzle seed generates invalid input value (number) for enum strings (pg)](https://github.com/drizzle-team/drizzle-orm/issues/4194)
- [[BUG]: drizzle seed breaks serial sequence sync with Postgres serial type](https://github.com/drizzle-team/drizzle-orm/issues/3915)

## Features

### ignore column in refinements

Now you can let drizzle-seed know if you want to ignore column during seeding.

```ts
// schema.ts
import { integer, pgTable, text } from "drizzle-orm/pg-core";

export const users = pgTable("users", {
id: integer().primaryKey(),
name: text().notNull(),
age: integer(),
photo: text(),
});
```

```ts
// index.ts
import { drizzle } from "drizzle-orm/node-postgres";
import { seed } from "drizzle-seed";
import * as schema from "./schema.ts";

async function main() {
const db = drizzle(process.env["DATABASE_URL"]!);
await seed(db, schema).refine((f) => ({
users: {
count: 5,
columns: {
name: f.fullName(),
photo: false, // the photo column will not be seeded, allowing the database to use its default value.
},
},
}));
}

main();
```

## Improvements

### Added `min`, `max` parameters to `time` generator

```ts
await seed(db, { timeTable: schema.timeTable }).refine((funcs) => ({
timeTable: {
count,
columns: {
time: funcs.time({
min: "13:12:13",
max: "15:12:13",
}),
},
},
}));
```

### Added `min`, `max` parameters to `timestamp` generator

```ts
await seed(db, { timestampTable: schema.timestampTable }).refine((funcs) => ({
timestampTable: {
count,
columns: {
timestamp: funcs.timestamp({
min: "2025-03-07 13:12:13.123Z",
max: "2025-03-09 15:12:13.456Z",
}),
},
},
}));
```

### Added `min`, `max` parameters to `datetime` generator

```ts
await seed(db, { datetimeTable: schema.datetimeTable }).refine((funcs) => ({
datetimeTable: {
count,
columns: {
datetime: funcs.datetime({
min: "2025-03-07 13:12:13Z",
max: "2025-03-09 15:12:13Z",
}),
},
},
}));
```

### PostgreSQL sequences updating after seed

`drizzle-seed` iterates through each column in a table, selects columns of type smallint, integer, bigint, smallserial, serial, or bigserial, and (if a sequence exists) updates it to the column’s maximum seeded value.

```sql
select setval(pg_get_serial_sequence('"schema_name"."table_name"', 'column_name'), 3, true);
```

## Breaking changes

### `uuid` generator was changed and upgraded to v4

```ts
await seed(db, { table }).refine((f) => ({
table: {
columns: {
// AA97B177-9383-4934-8543-0F91A7A02836
// ^
// 1
// the digit at position 1 is always one of '8', '9', 'A' or 'B'
column1: f.uuid(),
}
}
}))
```

**Reason for upgrade**

UUID values generated by the old version of the `uuid` generator fail Zod’s v4 UUID validation.

example
```ts
import { createSelectSchema } from 'drizzle-zod';
import { seed } from 'drizzle-seed';

await seed(db, { uuidTest: schema.uuidTest }, { count: 1 }).refine((funcs) => ({
uuidTest: {
columns: {
col1: funcs.uuid()
}
}
})
);

const uuidSelectSchema = createSelectSchema(schema.uuidTest);
const res = await db.select().from(schema.uuidTest);
// the line below will throw an error when using old version of uuid generator
uuidSelectSchema.parse(res[0]);
```

**Usage**
```ts
await seed(db, schema);
// or explicit
await seed(db, schema, { version: '4' });
```

**Switch to the old version**

The previous version of `uuid` generator is v1.
```ts
await seed(db, schema, { version: '1' });
```
To use the v2 generators while maintaining the v1 `uuid` generator:
```ts
await seed(db, schema, { version: '2' });
```
To use the v3 generators while maintaining the v1 `uuid` generator:
```ts
await seed(db, schema, { version: '3' });
```
2 changes: 1 addition & 1 deletion drizzle-arktype/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "drizzle-arktype",
"version": "1.0.0-beta.7",
"version": "1.0.0-beta.8",
"description": "Generate arktype schemas from Drizzle ORM schemas",
"type": "module",
"scripts": {
Expand Down
2 changes: 1 addition & 1 deletion drizzle-kit/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "drizzle-kit",
"version": "1.0.0-beta.7",
"version": "1.0.0-beta.8",
"homepage": "https://orm.drizzle.team",
"keywords": [
"drizzle",
Expand Down
2 changes: 1 addition & 1 deletion drizzle-orm/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "drizzle-orm",
"version": "1.0.0-beta.7",
"version": "1.0.0-beta.8",
"description": "Drizzle ORM package for SQL databases",
"type": "module",
"scripts": {
Expand Down
Loading