@tako./resume-builder-prisma
v1.0.2
Published
Prisma schema and types for Resume persistence
Readme
@tako./resume-builder-prisma
Prisma schema and helpers for persisting Resume data (aligned with @tako./resume-builder-core).
Install
npm install @tako./resume-builder-prisma @prisma/client
npm install -D prismaAdicionar modelos ao seu schema
Para injetar os modelos Resume, Basics, Work, etc. no schema do seu projeto (um único schema com seus modelos + resume-builder):
- Instale o pacote (acima).
- No diretório raiz do seu projeto, rode:
npx resume-builder-prisma-addO script detecta seu schema em prisma/schema.prisma, schema.prisma ou a pasta prisma/schema/ (multi-file). Em schema único, os modelos são anexados dentro de um bloco marcado com // @@resume-builder-prisma start / end; em multi-file, é criado prisma/schema/resume-builder.prisma.
- Gere o client e rode as migrações como de costume:
npx prisma generate
npx prisma migrate devAssim você usa um único schema no projeto e prisma generate / prisma migrate normalmente.
Generate the client (schema separado no pacote)
Point Prisma at this package's schema (from your app root):
npx prisma generate --schema=node_modules/@tako./resume-builder-prisma/schema.prismaOr use the path helper in code:
import { getSchemaPath } from "@tako./resume-builder-prisma"
// getSchemaPath() returns the absolute path to schema.prismaThen set DATABASE_URL (e.g. SQLite: file:./dev.db) and run migrations:
npx prisma migrate dev --schema=node_modules/@tako./resume-builder-prisma/schema.prismaUsage
Use PrismaClient from @prisma/client and the types from this package or core:
import { PrismaClient } from "@prisma/client"
import { validateResume, type Resume } from "@tako./resume-builder-prisma"
const prisma = new PrismaClient()
// Validate payload from API/form, then persist
const result = validateResume({ basics: { name: "Jane", email: "[email protected]" } })
if (!result.success) throw new Error("Invalid resume")
const { basics, work } = result.data
const resume = await prisma.resume.create({
data: {
basics: {
create: {
name: basics.name,
email: basics.email,
label: basics.label,
phone: basics.phone,
website: basics.website,
summary: basics.summary,
location: basics.location ?? undefined,
profiles: basics.profiles ?? undefined,
},
},
...(work?.length
? {
work: {
create: work.map((w) => ({
company: w.company,
position: w.position,
startDate: w.startDate,
endDate: w.endDate ?? null,
summary: w.summary ?? null,
highlights: w.highlights ?? null,
})),
},
}
: {}),
},
include: { basics: true, work: true },
})Database
Default schema uses SQLite. To use PostgreSQL, change in schema.prisma (or override in your app):
provider = "postgresql"url = env("DATABASE_URL")(e.g.postgresql://user:pass@localhost:5432/db)
API
- getSchemaPath(): string – path to this package's
schema.prisma. - Re-exports Resume, Basics, WorkExperience, Education, Skill, Language, Project, Location, Profile, ValidateResult and validateResume from
@tako./resume-builder-core.
