prepareServer() — drizzle-orm Function Reference
Architecture documentation for the prepareServer() function in studio.ts from the drizzle-orm codebase.
Entity Profile
Dependency Diagram
graph TD 2a2d384e_29cd_b901_fdda_e10fca96a027["prepareServer()"] 82de12f8_a8ca_9d38_8da8_9ac945d81e01["studio.ts"] 2a2d384e_29cd_b901_fdda_e10fca96a027 -->|defined in| 82de12f8_a8ca_9d38_8da8_9ac945d81e01 4989a948_cacf_e4b2_7283_c9335d2b7983["startServerFromSetup()"] 4989a948_cacf_e4b2_7283_c9335d2b7983 -->|calls| 2a2d384e_29cd_b901_fdda_e10fca96a027 72630e5c_93c3_75d3_29f3_af0928ebe15c["studio.handler()"] 72630e5c_93c3_75d3_29f3_af0928ebe15c -->|calls| 2a2d384e_29cd_b901_fdda_e10fca96a027 92c3479f_50d7_632d_a64a_ace0d75fef1e["extractRelations()"] 2a2d384e_29cd_b901_fdda_e10fca96a027 -->|calls| 92c3479f_50d7_632d_a64a_ace0d75fef1e 649d9820_66d0_6975_1e12_72ca2dab5d5a["jsonStringify()"] 2a2d384e_29cd_b901_fdda_e10fca96a027 -->|calls| 649d9820_66d0_6975_1e12_72ca2dab5d5a style 2a2d384e_29cd_b901_fdda_e10fca96a027 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
drizzle-kit/src/serializer/studio.ts lines 685–847
export const prepareServer = async (
{
dialect,
driver,
packageName,
databaseName,
proxy,
transactionProxy,
customDefaults,
schema: drizzleSchema,
relations,
dbHash,
casing,
schemaFiles,
}: Setup,
app?: Hono,
): Promise<Server> => {
app = app !== undefined ? app : new Hono();
app.use(compress());
app.use(async (ctx, next) => {
await next();
// * https://wicg.github.io/private-network-access/#headers
// * https://github.com/drizzle-team/drizzle-orm/issues/1857#issuecomment-2395724232
ctx.header('Access-Control-Allow-Private-Network', 'true');
});
app.use(cors());
app.onError((err, ctx) => {
console.error(err);
return ctx.json({
status: 'error',
error: err.message,
});
});
const relationalSchema: Record<string, unknown> = {
...Object.fromEntries(
Object.entries(drizzleSchema)
.map(([schemaName, schema]) => {
// have unique keys across schemas
const mappedTableEntries = Object.entries(schema).map(
([tableName, table]) => {
return [`__${schemaName}__.${tableName}`, table];
},
);
return mappedTableEntries;
})
.flat(),
),
...relations,
};
const relationsConfig = extractTablesRelationalConfig(
relationalSchema,
createTableRelationsHelpers,
);
app.post('/', zValidator('json', schema), async (c) => {
const body = c.req.valid('json');
const { type } = body;
if (type === 'init') {
const preparedDefaults = customDefaults.map((d) => ({
schema: d.schema,
table: d.table,
column: d.column,
}));
let relations: Relation[] = [];
// Attempt to extract relations from the relational config.
// An error may occur if the relations are ambiguous or misconfigured.
try {
relations = extractRelations(relationsConfig, casing);
} catch (error) {
console.warn(
'Failed to extract relations. This is likely due to ambiguous or misconfigured relations.',
);
console.warn(
'Please check your schema and ensure that all relations are correctly defined.',
);
Domain
Subdomains
Defined In
Called By
Source
Frequently Asked Questions
What does prepareServer() do?
prepareServer() is a function in the drizzle-orm codebase, defined in drizzle-kit/src/serializer/studio.ts.
Where is prepareServer() defined?
prepareServer() is defined in drizzle-kit/src/serializer/studio.ts at line 685.
What does prepareServer() call?
prepareServer() calls 2 function(s): extractRelations, jsonStringify.
What calls prepareServer()?
prepareServer() is called by 2 function(s): startServerFromSetup, studio.handler.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free