@electric-sql/cli
Version:
ElectricSQL command line interface (CLI).
108 lines (101 loc) • 2.89 kB
JavaScript
import { fileURLToPath } from "url";
import { generateClient } from '../migrations/migrate.js';
import fs from "fs";
import path from "path";
const prismaSchema = `
datasource db {
provider = "postgresql"
url = env("PRISMA_DB_URL")
}
model Items {
value String
nbr Int?
}
model User {
id Int
name String?
meta String?
posts Post[]
profile Profile?
}
model Post {
id Int
title String
contents String
nbr Int?
authorId Int
author User?
}
model Profile {
id Int
bio String
meta Json?
userId Int
user User?
imageId String?
image ProfileImage?
}
model ProfileImage {
id String
image Bytes
profile Profile?
}
model DataTypes {
id Int
date DateTime? .Date
time DateTime? .Time(3)
timetz DateTime? .Timetz(3)
timestamp DateTime? .Timestamp(3)
timestamptz DateTime? .Timestamptz(3)
bool Boolean?
uuid String? .Uuid
int2 Int? .SmallInt
int4 Int?
int8 BigInt?
float4 Float? .Real
float8 Float? .DoublePrecision
json Json?
bytea Bytes?
relatedId Int?
related Dummy?
}
model Dummy {
id Int
timestamp DateTime? .Timestamp(3)
datatype DataTypes[]
}
`;
const thisDir = path.dirname(fileURLToPath(import.meta.url));
const prismaSchemaDir = path.join(thisDir, "prisma");
const prismaSchemaPath = path.join(prismaSchemaDir, "schema.prisma");
const generatedClientDir = path.join(
thisDir,
"..",
"..",
"..",
"..",
"clients",
"typescript",
"test",
"client",
"generated"
);
const generatedClientPath = path.join(generatedClientDir, "index.ts");
const migrationsPath = path.join(generatedClientDir, "migrations.ts");
const pgMigrationsPath = path.join(generatedClientDir, "pg-migrations.ts");
fs.rmSync(generatedClientDir, { recursive: true, force: true });
if (!fs.existsSync(prismaSchemaDir)) {
fs.mkdirSync(prismaSchemaDir);
}
fs.writeFileSync(prismaSchemaPath, prismaSchema);
await generateClient(prismaSchemaPath, generatedClientDir);
fs.writeFileSync(migrationsPath, "export default []");
fs.writeFileSync(pgMigrationsPath, "export default []");
const clientStr = fs.readFileSync(generatedClientPath).toString();
const fixedClientStr = clientStr.replace(
"electric-sql/client/model",
"../../../src/client/model"
);
fs.writeFileSync(generatedClientPath, fixedClientStr);
fs.rmSync(prismaSchemaDir, { recursive: true, force: true });
//# sourceMappingURL=generateTestClient.js.map