제너레이터(Generators)

경고

현재는 isUnique와 함께 arraySize를 지정하면, 고유한 값들이 생성된 후 배열로 묶입니다. 이때 생성되는 것은 고유한 값들이며, 고유한 배열이 아님을 주의하세요.

---

default

제너레이터가 호출될 때마다 동일한 값을 생성합니다.

매개변수기본값타입
defaultValueany
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  posts: {
    columns: {
      content: funcs.default({
        // 생성할 값
        defaultValue: "post content",

        // 1차원 배열의 요소 개수
        // (지정하면 배열이 생성됨)
        arraySize: 3
      }),
    },
  },
}));

valuesFromArray

주어진 배열에서 값을 생성합니다.

매개변수기본값타입
valuesany[] | { weight: number; values: any[] }[]
isUnique데이터베이스 컬럼 고유성boolean
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  posts: {
    columns: {
      title: funcs.valuesFromArray({
        // 생성할 값의 배열 (가중치가 적용된 값의 배열도 가능)
        values: ["Title1", "Title2", "Title3", "Title4", "Title5"],

        // 생성된 값이 고유한지 여부를 제어하는 속성
        isUnique: true,
        
        // 1차원 배열의 요소 개수
        // (지정된 경우 배열이 생성됨)
        arraySize: 3
      }),
    },
  },
}));

intPrimaryKey

1부터 시작하는 순차적인 정수를 생성합니다.

파라미터기본값타입
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  posts: {
    columns: {
      id: funcs.intPrimaryKey(),
    },
  },
}));

number

주어진 범위 내에서 부동 소수점 숫자를 생성합니다.

파라미터기본값타입
isUnique데이터베이스 컬럼의 고유성boolean
precision100number
maxValue `precision * 1000` (isUnique가 false인 경우) `precision * count` (isUnique가 true인 경우)number
minValue-maxValuenumber
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  products: {
    columns: {
      unitPrice: funcs.number({
        // 범위의 하한값
        minValue: 10,

        // 범위의 상한값
        maxValue: 120,
        
        // 생성된 숫자의 정밀도:
        // precision이 10이면 값은 소수점 첫째 자리까지 정확함 (예: 1.2, 34.6);
        // precision이 100이면 값은 소수점 둘째 자리까지 정확함 (예: 1.23, 34.67).
        precision: 100,

        // 생성된 값이 고유해야 하는지 여부를 제어하는 속성
        isUnique: false,

        // 1차원 배열의 요소 수
        // (지정된 경우 배열이 생성됨)
        arraySize: 3
      }),
    },
  },
}));

int

주어진 범위 내에서 정수를 생성합니다.

매개변수기본값타입
isUnique데이터베이스 컬럼의 고유성boolean
maxValue`isUnique`가 `false`면 `1000` `isUnique`가 `true`면 `count * 10`number | bigint
minValue-maxValuenumber | bigint
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  products: {
    columns: {
      unitsInStock: funcs.int({
        // 범위의 하한값
        minValue: 0,

        // 범위의 상한값
        maxValue: 100,

        // 생성된 값이 고유해야 하는지 여부를 제어하는 속성
        isUnique: false,

        // 1차원 배열의 요소 개수
        // (지정된 경우 배열이 생성됨)
        arraySize: 3
      }),
    },
  },
}));

boolean

불리언 값(true 또는 false)을 생성합니다.

파라미터기본값타입
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      isAvailable: funcs.boolean({
        // 각 1차원 배열의 요소 개수
        // (지정하면 배열이 생성됩니다.)
        arraySize: 3
      }),
    },
  },
}));

date

주어진 범위 내에서 날짜를 생성합니다.

파라미터기본값타입
minDatenew Date('2020-05-08')string | Date
maxDatenew Date('2028-05-08')string | Date
arraySizenumber
IMPORTANT

minDate 또는 maxDate 중 하나만 제공된 경우, 지정되지 않은 파라미터는 지정된 날짜에서 8년을 더하거나 빼서 계산됩니다.

import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      birthDate: funcs.date({
        // 범위의 하한값
        minDate: "1990-01-01",

        // 범위의 상한값
        maxDate: "2010-12-31",

        // 1차원 배열의 요소 개수
        // (지정된 경우 배열이 생성됩니다.)
        arraySize: 3
      }),
    },
  },
}));

time

24시간 형식으로 시간을 생성합니다.

파라미터기본값타입
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      birthTime: funcs.time({
        // 각 1차원 배열의 요소 개수
        // (지정된 경우 배열이 생성됩니다.)
        arraySize: 3
      }),
    },
  },
}));

timestamp

타임스탬프를 생성합니다.

파라미터기본값타입
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  orders: {
    columns: {
      shippedDate: funcs.timestamp({
        // 각 1차원 배열의 요소 개수.
        // (지정된 경우, 배열이 생성됩니다.)
        arraySize: 3
      }),
    },
  },
}));

datetime

날짜와 시간 객체를 생성합니다.

매개변수기본값타입
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  orders: {
    columns: {
      shippedDate: funcs.datetime({
        // 각 1차원 배열의 요소 개수
        // (지정하면 배열이 생성됩니다.)
        arraySize: 3
      }),
    },
  },
}));

year

YYYY 형식으로 연도를 생성합니다.

파라미터기본값타입
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      birthYear: funcs.year({
        // 1차원 배열의 요소 개수
        // (지정하면 배열이 생성됩니다.)
        arraySize: 3
      }),
    },
  },
}));

json

고정된 구조의 JSON 객체를 생성합니다.

{ email, name, isGraduated, hasJob, salary, startedWorking, visitedCountries }

// 또는

{ email, name, isGraduated, hasJob, visitedCountries }

JSON 구조는 무작위로 선택됩니다.

파라미터기본값타입
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      metadata: funcs.json({
        // 각 1차원 배열의 요소 개수
        // (지정된 경우 배열이 생성됩니다.)
        arraySize: 3
      }),
    },
  },
}));

interval

시간 간격을 생성합니다.

생성된 값의 예시: 1년 12일 5분

파라미터기본값타입
isUnique컬럼 고유성boolean
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      timeSpentOnWebsite: funcs.interval({
        // `isUnique` - 생성된 값이 고유한지 여부를 제어하는 속성
        isUnique: true,

        // 각 1차원 배열의 요소 수.
        // (지정된 경우 배열이 생성됩니다.)
        arraySize: 3
      }),
    },
  },
}));

string

랜덤 문자열을 생성합니다.

파라미터기본값타입
isUniqueboolean
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      hashedPassword: funcs.string({
        // `isUnique` - 생성된 값이 고유한지 여부를 제어하는 속성
        isUnique: false,
        
        // 1차원 배열의 요소 개수
        // (지정된 경우 배열이 생성됨)
        arraySize: 3
      }),
    },
  },
}));

uuid

v4 UUID 문자열을 생성합니다.

매개변수기본값타입
arraySizenumber
import { seed } from "drizzle-seed";
await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  products: {
    columns: {
      id: funcs.uuid({
        // 1차원 배열의 요소 개수
        // (지정하면 배열이 생성됩니다.)
        arraySize: 3
      }),
    },
  },
}));

firstName

사람의 이름을 생성합니다.

파라미터기본값타입
isUniqueboolean
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      firstName: funcs.firstName({
        // `isUnique` - 생성된 값이 고유한지 여부를 제어하는 속성
        isUnique: true,

        // 각 1차원 배열의 요소 수.
        // (지정된 경우 배열이 생성됩니다.)
        arraySize: 3
      }),
    },
  },
}));

lastName

사람의 성(last name)을 생성합니다.

파라미터기본값타입
isUniqueboolean
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      lastName: funcs.lastName({
        // `isUnique` - 생성된 값이 고유한지 여부를 제어하는 속성
        isUnique: false,
        
        // 각 1차원 배열의 요소 수.
        // (지정된 경우 배열이 생성됩니다.)
        arraySize: 3
      }),
    },
  },
}));

fullName

사람의 전체 이름을 생성합니다.

매개변수기본값타입
isUniqueboolean
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      fullName: funcs.fullName({
        // `isUnique` - 생성된 값이 고유한지 여부를 제어하는 속성
        isUnique: true,

        // 각 1차원 배열의 요소 수.
        // (지정된 경우 배열이 생성됩니다.)
        arraySize: 3
      }),
    },
  },
}));

email

고유한 이메일 주소를 생성합니다.

파라미터기본값타입
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      email: funcs.email({
        // 각 1차원 배열의 요소 개수
        // (지정하면 배열이 생성됩니다.)
        arraySize: 3
      }),
    },
  },
}));

phoneNumber

고유한 전화번호를 생성합니다.

파라미터기본값타입
templatestring
prefixes접두사에 사용된 데이터셋string[]
generatedDigitsNumbers7 - prefixes가 정의된 경우number | number[]
arraySizenumber
import { seed } from "drizzle-seed";

// template 속성을 사용하여 전화번호 생성
await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      phoneNumber: funcs.phoneNumber({ 
        // `template` - 전화번호 템플릿. 모든 '#' 기호는 생성된 숫자로 대체됩니다.
        template: "+(380) ###-####",

        // 1차원 배열의 요소 수. 
        // (지정된 경우 배열이 생성됩니다.)
        arraySize: 3
      }),
    },
  },
}));
import { seed } from "drizzle-seed";

// prefixes와 generatedDigitsNumbers 속성을 사용하여 전화번호 생성
await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      phoneNumber: funcs.phoneNumber({
        // `prefixes` - 전화번호 접두사로 사용할 문자열 배열. (`template` 속성과 호환되지 않음)
        prefixes: ["+380 99", "+380 67"],

        // `generatedDigitsNumbers` - 접두사 끝에 추가될 숫자의 개수. (`template` 속성과 호환되지 않음)
        generatedDigitsNumbers: 7,

        // 1차원 배열의 요소 수. 
        // (지정된 경우 배열이 생성됩니다.)
        arraySize: 3
      }),
    },
  },
}));
import { seed } from "drizzle-seed";

// prefixes와 generatedDigitsNumbers 속성을 사용하지만, 각 접두사에 대해 다른 generatedDigitsNumbers를 적용하여 전화번호 생성
await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      phoneNumber: funcs.phoneNumber({
        // `prefixes` - 전화번호 접두사로 사용할 문자열 배열. (`template` 속성과 호환되지 않음)
        prefixes: ["+380 99", "+380 67", "+1"],

        // `generatedDigitsNumbers` - 접두사 끝에 추가될 숫자의 개수. (`template` 속성과 호환되지 않음)
        generatedDigitsNumbers: [7, 7, 10],

        // 1차원 배열의 요소 수. 
        // (지정된 경우 배열이 생성됩니다.)
        arraySize: 3
      }),
    },
  },
}));

country

국가 이름을 생성합니다.

파라미터기본값타입
isUniqueboolean
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      country: funcs.country({
        // `isUnique` - 생성된 값이 고유한지 여부를 제어하는 속성
        isUnique: false,
        
        // 각 1차원 배열의 요소 수.
        // (지정된 경우 배열이 생성됩니다.)
        arraySize: 3
      }),
    },
  },
}));

city

도시 이름을 생성합니다.

파라미터기본값타입
isUniqueboolean
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      city: funcs.city({
        // `isUnique` - 생성된 값이 고유한지 여부를 제어하는 속성
        isUnique: false,

        // 각 1차원 배열의 요소 수.
        // (지정된 경우 배열이 생성됩니다.)
        arraySize: 3
      }),
    },
  },
}));

streetAddress

거리 주소를 생성합니다.

파라미터기본값타입
isUniqueboolean
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      streetAddress: funcs.streetAddress({
        // `isUnique` - 생성된 값이 고유한지 여부를 제어하는 속성
        isUnique: false,
        
        // 1차원 배열의 요소 개수
        // (지정된 경우 배열이 생성됨)
        arraySize: 3 
      }),
    },
  },
}));

jobTitle

직업명을 생성합니다.

파라미터기본값타입
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      jobTitle: funcs.jobTitle({
        // 각 1차원 배열의 요소 개수.
        // (지정된 경우 배열이 생성됩니다.)
        arraySize: 3
      }),
    },
  },
}));

postcode

우편번호를 생성합니다.

파라미터기본값타입
isUniqueboolean
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      postcode: funcs.postcode({
        // `isUnique` - 생성된 값이 고유한지 여부를 제어하는 속성
        isUnique: true,

        // 각 1차원 배열의 요소 수.
        // (지정된 경우 배열이 생성됩니다.)
        arraySize: 3
      }),
    },
  },
}));

state

미국 주(state)를 생성합니다.

파라미터기본값타입
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      state: funcs.state({
        // 각 1차원 배열의 요소 개수
        // (지정하면 배열이 생성됩니다.)
        arraySize: 3
      }),
    },
  },
}));

companyName

랜덤한 회사 이름을 생성합니다.

파라미터기본값타입
isUniqueboolean
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  users: {
    columns: {
      company: funcs.companyName({ 
        // `isUnique` - 생성된 값이 고유한지 여부를 제어하는 속성
        isUnique: true,

        // 각 1차원 배열의 요소 수.
        // (지정된 경우 배열이 생성됩니다.)
        arraySize: 3
      }),
    },
  },
}));

loremIpsum

lorem ipsum 텍스트 문장을 생성합니다.

매개변수기본값타입
sentencesCount1number
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  posts: {
    columns: {
      content: funcs.loremIpsum({
        // `sentencesCount` - 생성할 문장의 개수 (하나의 생성된 값으로 문자열 반환)
        sentencesCount: 2,

        // 1차원 배열의 요소 개수
        // (지정된 경우 배열이 생성됨)
        arraySize: 3
      }),
    },
  },
}));

point

지정된 범위 내에서 2D 포인트를 생성합니다. x와 y 좌표의 범위를 설정할 수 있습니다.

매개변수기본값타입
isUnique데이터베이스 컬럼의 고유성 여부boolean
maxXValue `10 * 1000` (isUnique가 false일 때) `10 * count` (isUnique가 true일 때)number
minXValue-maxXValuenumber
maxYValue `10 * 1000` (isUnique가 false일 때) `10 * count` (isUnique가 true일 때)number
minYValue-maxYValuenumber
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  triangles: {
    columns: {
      pointCoords: funcs.point({
        // `isUnique` - 생성된 값이 고유한지 여부를 제어하는 속성
        isUnique: true,

        // `minXValue` - x 좌표의 하한값
        minXValue: -5,

        // `maxXValue` - x 좌표의 상한값
        maxXValue: 20,

        // `minYValue` - y 좌표의 하한값
        minYValue: 0,

        // `maxYValue` - y 좌표의 상한값
        maxYValue: 30,

        // 각 1차원 배열의 요소 수
        // (지정된 경우 배열이 생성됨)
        arraySize: 3
      }),
    },
  },
}));

line

지정된 범위 내에서 2D 직선을 생성합니다. 이때 직선의 a, b, c 파라미터를 사용합니다.

직선 방정식: a*x + b*y + c = 0
파라미터기본값타입
isUnique데이터베이스 컬럼의 고유성 여부boolean
maxAValue `10 * 1000` (isUnique가 false일 때) `10 * count` (isUnique가 true일 때)number
minAValue-maxAValuenumber
maxBValue `10 * 1000` (isUnique가 false일 때) `10 * count` (isUnique가 true일 때)number
minBValue-maxBValuenumber
maxCValue `10 * 1000` (isUnique가 false일 때) `10 * count` (isUnique가 true일 때)number
minCValue-maxCValuenumber
arraySizenumber
import { seed } from "drizzle-seed";

await seed(db, schema, { count: 1000 }).refine((funcs) => ({
  lines: {
    columns: {
      lineParams: funcs.point({
        // `isUnique` - 생성된 값이 고유한지 여부를 제어하는 속성
        isUnique: true,

        // `minAValue` - a 파라미터의 하한값
        minAValue: -5,

        // `maxAValue` - a 파라미터의 상한값
        maxAValue: 20,

        // `minBValue` - b 파라미터의 하한값
        minBValue: 0,

        // `maxBValue` - b 파라미터의 상한값
        maxBValue: 30,

        // `minCValue` - c 파라미터의 하한값
        minCValue: 0,

        // `maxCValue` - c 파라미터의 상한값
        maxCValue: 10,

        // 1차원 배열의 요소 개수 (지정 시 배열이 생성됨)
        arraySize: 3
      }),
    },
  },
}));