feat: Region Module (basic CRUD) (#6315)

This commit is contained in:
Oli Juhl
2024-02-05 16:03:26 +00:00
committed by GitHub
parent ede221d4f7
commit 823b98aaa1
49 changed files with 2716 additions and 13 deletions
+54
View File
@@ -0,0 +1,54 @@
import {
BeforeCreate,
Cascade,
Entity,
ManyToOne,
OnInit,
PrimaryKey,
Property,
} from "@mikro-orm/core"
import { generateEntityId } from "@medusajs/utils"
import Region from "./region"
@Entity({ tableName: "region_country" })
export default class Country {
@PrimaryKey({ columnType: "text" })
id: string
@Property({ columnType: "text" })
iso_2: string
@Property({ columnType: "text" })
iso_3: string
@Property({ columnType: "int" })
num_code: number
@Property({ columnType: "text" })
name: string
@Property({ columnType: "text" })
display_name: string
@Property({ columnType: "text", nullable: true })
region_id: string | null = null
@ManyToOne({
entity: () => Region,
onDelete: "cascade",
index: "IDX_country_region_id",
cascade: [Cascade.REMOVE, Cascade.PERSIST],
})
region: Region
@BeforeCreate()
onCreate() {
this.id = generateEntityId(this.id, "reg_ctry")
}
@OnInit()
onInit() {
this.id = generateEntityId(this.id, "reg_ctry")
}
}
+36
View File
@@ -0,0 +1,36 @@
import { generateEntityId } from "@medusajs/utils"
import {
BeforeCreate,
Entity,
OnInit,
PrimaryKey,
Property,
} from "@mikro-orm/core"
@Entity({ tableName: "region_currency" })
export default class Currency {
@PrimaryKey({ columnType: "text" })
id: string
@Property({ columnType: "text" })
code: string
@Property({ columnType: "text" })
symbol: string
@Property({ columnType: "text" })
symbol_native: string
@Property({ columnType: "text" })
name: string
@BeforeCreate()
onCreate() {
this.id = generateEntityId(this.id, "reg_curr")
}
@OnInit()
onInit() {
this.id = generateEntityId(this.id, "reg_curr")
}
}
+4
View File
@@ -0,0 +1,4 @@
export { default as Country } from "./country"
export { default as Currency } from "./currency"
export { default as Region } from "./region"
+82
View File
@@ -0,0 +1,82 @@
import { DAL } from "@medusajs/types"
import { DALUtils, generateEntityId } from "@medusajs/utils"
import {
BeforeCreate,
Cascade,
Collection,
Entity,
Filter,
Index,
ManyToOne,
OneToMany,
OptionalProps,
PrimaryKey,
Property,
} from "@mikro-orm/core"
import Country from "./country"
import Currency from "./currency"
type RegionOptionalProps =
| "currency"
| "countries"
| DAL.SoftDeletableEntityDateColumns
@Entity({ tableName: "region" })
@Filter(DALUtils.mikroOrmSoftDeletableFilterOptions)
export default class Region {
[OptionalProps]?: RegionOptionalProps
@PrimaryKey({ columnType: "text" })
id: string
@Property({ columnType: "text" })
name: string
@Property({ columnType: "text" })
currency_code: string
@ManyToOne({
entity: () => Currency,
onDelete: "cascade",
index: "IDX_region_currency_code",
cascade: [Cascade.PERSIST],
})
currency: Currency
@OneToMany(() => Country, (country) => country.region, {
cascade: [Cascade.REMOVE],
})
countries = new Collection<Country>(this)
@Property({ columnType: "jsonb", nullable: true })
metadata: Record<string, unknown> | null = null
@Property({
onCreate: () => new Date(),
columnType: "timestamptz",
defaultRaw: "now()",
})
created_at: Date
@Property({
onCreate: () => new Date(),
onUpdate: () => new Date(),
columnType: "timestamptz",
defaultRaw: "now()",
})
updated_at: Date
@Index({ name: "IDX_region_deleted_at" })
@Property({ columnType: "timestamptz", nullable: true })
deleted_at: Date | null = null
@BeforeCreate()
onCreate() {
this.id = generateEntityId(this.id, "reg")
}
@BeforeCreate()
onInit() {
this.id = generateEntityId(this.id, "reg")
}
}