Define shared columns

hello , please i'm trying to create some shared columns definition in able to be used in multiple tables . my file structure : -> database/tables/<table_name>.ts : containing table definition + relations + schemas + types -> database/tables/utils.ts: containing the shared functions + columns definitions -> database/tables/index.ts : export all the tables + utils here is where i define the shared columns : ( database/tables/utils.ts)
const tokenCols = {
id: serial('id').primaryKey(),
userId: text('user_id')
.notNull()
.references(() => usersTable.id, { onDelete: 'cascade' }),
email: text('email').notNull(),
token: text('token').notNull(),
expiresAt: timestamp('expires_at', { withTimezone: true, mode: 'date' }).notNull()
};

const timestampsCols = {
createdAt: timestamp('created_at', { mode: 'date' }).notNull().defaultNow(),
updatedAt: timestamp('updated_at', { mode: 'date' }).$onUpdate(() => new Date())
};

const coordinatesCols = {
latitude: text('latitude'),
longitude: text('longitude')
};

function lower(email: AnyPgColumn): SQL {
return sql`lower(${email})`;
}

export {lower, coordinatesCols, timestampsCols, tokenCols };
const tokenCols = {
id: serial('id').primaryKey(),
userId: text('user_id')
.notNull()
.references(() => usersTable.id, { onDelete: 'cascade' }),
email: text('email').notNull(),
token: text('token').notNull(),
expiresAt: timestamp('expires_at', { withTimezone: true, mode: 'date' }).notNull()
};

const timestampsCols = {
createdAt: timestamp('created_at', { mode: 'date' }).notNull().defaultNow(),
updatedAt: timestamp('updated_at', { mode: 'date' }).$onUpdate(() => new Date())
};

const coordinatesCols = {
latitude: text('latitude'),
longitude: text('longitude')
};

function lower(email: AnyPgColumn): SQL {
return sql`lower(${email})`;
}

export {lower, coordinatesCols, timestampsCols, tokenCols };
error:
Cannot access 'timestampsCols' before initialization
Cannot access 'timestampsCols' before initialization
3 Replies
rphlmr ⚡
rphlmr ⚡6mo ago
Hello, when does this error occur? Here a demo of shared columns https://drizzle.run/hoec133o0ktmw3hndjm0qkx0
rphlmr ⚡
rphlmr ⚡6mo ago
If you have a circular dependencies, is it possible that you import utils.ts from index.ts in your tables? You can't do that since utils.ts is also imported in index.ts
Seifeddine  LARGAT
Seifeddine LARGATOP6mo ago
thanks Raphaël for the quick response , I've just rescanned my tables and i've found a nasty '.' thanks for mentioning that🙏🏻
Want results from more Discord servers?
Add your server