setup
This commit is contained in:
40
src/database/schema/location.ts
Normal file
40
src/database/schema/location.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
// db/schema/location.ts
|
||||
import {
|
||||
pgTable,
|
||||
uuid,
|
||||
varchar,
|
||||
text,
|
||||
timestamp,
|
||||
index,
|
||||
} from "drizzle-orm/pg-core";
|
||||
|
||||
export const locations = pgTable(
|
||||
"ms_locations",
|
||||
{
|
||||
id: uuid("id").defaultRandom().primaryKey(),
|
||||
branchId: text("branch_id").notNull(), // Multi-tenant support
|
||||
code: varchar("code", { length: 255 }).notNull(),
|
||||
nameTh: varchar("name_th", { length: 255 }).notNull(),
|
||||
nameEn: varchar("name_en", { length: 255 }),
|
||||
|
||||
type: varchar("type", { length: 50 }).notNull(),
|
||||
// 'country' | 'province' | 'district' | 'subdistrict'
|
||||
|
||||
parentId: uuid("parent_id"), // self reference (tree)
|
||||
|
||||
createdAt: timestamp("created_at").defaultNow().notNull(),
|
||||
updatedAt: timestamp("updated_at").defaultNow().notNull(),
|
||||
},
|
||||
(table) => ({
|
||||
branchIdx: index("ms_locations_branch_id_idx").on(table.branchId),
|
||||
typeIndex: index("ms_locations_type_idx").on(table.type),
|
||||
parentIdIndex: index("ms_locations_parent_id_idx").on(table.parentId),
|
||||
branchTypeIdx: index("ms_locations_branch_type_idx").on(
|
||||
table.branchId,
|
||||
table.type,
|
||||
),
|
||||
}),
|
||||
);
|
||||
|
||||
export type Location = typeof locations.$inferSelect;
|
||||
export type NewLocation = typeof locations.$inferInsert;
|
||||
Reference in New Issue
Block a user