https://github.com/edsol/drizzle-schema-generator
Automatically generate of Drizzle schema from existing database
https://github.com/edsol/drizzle-schema-generator
database database-schema drizzle drizzle-orm graphql mysql postgresql
Last synced: 5 months ago
JSON representation
Automatically generate of Drizzle schema from existing database
- Host: GitHub
- URL: https://github.com/edsol/drizzle-schema-generator
- Owner: Edsol
- License: apache-2.0
- Created: 2024-05-17T06:33:20.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-06-04T07:42:36.000Z (about 2 years ago)
- Last Synced: 2024-06-06T14:13:10.462Z (about 2 years ago)
- Topics: database, database-schema, drizzle, drizzle-orm, graphql, mysql, postgresql
- Language: TypeScript
- Homepage:
- Size: 187 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://nodei.co/npm/drizzle-schema-generator/)
# Drizzle schema generator
Automatically generate of Drizzle ORM schema from existing database
## Install
```bash
npm install drizzle-schema-generator
```
## Roadmap
[x] Extend to PostgreSQL
[x] Optimize performances
[ ] Unify adapter logic
[ ] Extend to SQLite ([coming soon](https://orm.drizzle.team/docs/schemas))
## Usage
import the Adapter and inizialize it with the connection information:
```typescript
import { Adapter } from "drizzle-schema-generator";
const adatper = new Adapter({
dbType: process.env.DATABASE_TYPE,
host: process.env.DATABASE_HOST,
user: process.env.DATABASE_USER,
password: process.env.DATABASE_PASSWORD,
database: process.env.DATABASE_NAME,
});
```
Get Drizzle ORM schema:
```typescript
const drizzelSchema = await adatper.getSchema();
```
or get connection:
```typescript
adapter.getConnection();
```
## Use case
Extract schema from existing database to start Graphql server (like Apollo) using [drizzle-graphql](https://github.com/drizzle-team/drizzle-graphql) plugin:
```typescript
import dotenv from "dotenv";
dotenv.config();
import { buildSchema } from "drizzle-graphql";
import { drizzle } from "drizzle-orm/mysql2";
import { ApolloServer } from "@apollo/server";
import { startStandaloneServer } from "@apollo/server/standalone";
import { Adapter } from "drizzle-schema-generator";
async function main() {
const adatper = new Adapter({
dbType: process.env.DATABASE_TYPE,
host: process.env.DATABASE_HOST,
user: process.env.DATABASE_USER,
password: process.env.DATABASE_PASSWORD,
database: process.env.DATABASE_NAME,
});
const drizzelSchema = await adatper.getSchema();
const db = drizzle(adatper.getConnection(), {
schema: drizzelSchema,
mode: "default",
});
const { schema } = buildSchema(db);
const server = new ApolloServer({ schema });
const { url } = await startStandaloneServer(server);
console.log(`🚀 Apollo Server ready at ${url}`);
}
main();
```
## Examples
More examples are available [here](./example/README.md)