Skip to content

Instantly share code, notes, and snippets.

View dyrkow's full-sized avatar
🫐
Working...

Dyrkow Andrew dyrkow

🫐
Working...
View GitHub Profile
@dyrkow
dyrkow / Cooking.ts
Last active October 10, 2023 12:37
class CookingOrder extends ValueObject {
// TODO: тут только те данные, которые нужны для работы в этом контексте
}
// Основная сущность, задача на готовку
class CookingRequest extends Aggregate {
id: Identifier;
orderId: Identifier;
positions: CookingRequestPosition[];
@dyrkow
dyrkow / ILoyaltySystem.ts
Last active September 14, 2023 13:16
Loyalty system
interface ILoyaltySystem {
/**
*/
findMember(search: string): Promise<LoyaltyMember[]>;
registerMember(name: string, phone: string): Promise<id>;
}
@dyrkow
dyrkow / Receipt.ts
Last active November 21, 2023 13:07
enum PrintableDocumentType {
SELL = 'sell',
PAYBACK = 'payback',
OPEN_SHIFT = 'open_shift',
CLOSE_SHIFT = 'close_shift',
CASH_INCOME = 'cash_income',
CASH_OUTCOME = 'cash_outcome',
PRECHECK = 'precheck',
PACKING_LIST = 'packing_list',
export enum PaymentMethod {
CASH = 'cash', // hardware
CARD = 'card', // hardware, external
ONLINE = 'online', // shop, external
BONUS = 'bonus', // loyalty
SBP = 'sbp', // payment_service, external
}
export enum PaymentProvider {
HARDWARE = 'hardware', // Оплата производится с помощью втроенного оборудования
@dyrkow
dyrkow / IBankTerminal.ts
Last active March 21, 2023 08:40
Abstract Hardware
/**
* This interface define bank terminal device
*
* @method payByPaymentCard
* @method cancelPayByPaymentCard
* @method settlement
* @method report
*/
export interface IBankTerminal extends IHardware {
/**
export interface IUseCase<TRequest, TResponse> {
execute(request?: TRequest): Promise<TResponse>
}
class AddProductToOrderUseCase implements IUseCase<Identifier, Promise<void>> {
protected productRepository: IProductRepository;
protected orderRepository: IOrderRepository;
async execute(productId: Identifier) {
const order = await this.orderRepository.getCurrent();
2. Решаем проблему с крашем всего приложения в пользу краша конкретной БОЛЬШОЙ части интерефейса, с возможностью исправить проблему вручную
<div>
<ErrorBoundary>
<ProfileScreen />
</ErrorBoundary>
<ErrorBoundary title="Ошибка!" description="Что-то случилось" action={(props) => <Button onPress={props.onRefresh}>Повторить</Button>}>
<OrderItems />
</ErrorBoundary>
<ErrorBoundary>
@dyrkow
dyrkow / Lint only changed files
Created November 15, 2021 09:29
Command for lint only changed files
eslint --fix $(git diff --name-only HEAD | xargs)
// Add deps in top
import groovy.json.JsonSlurper
// Add this function to your android/app/build.gradle
def getFromPackage(field) {
def inputFile = new File("$rootDir/../package.json")
def packageJson = new JsonSlurper().parseText(inputFile.text)
# Функциональщина
## lambda исчисления
Аппликация - применение функции к определеннному значениию, обозначается ƒ a где ƒ - функция а - значение (ƒ - трактуется как алгоритм производящий работу с входным значением а)
В λ-исчислении любой программный код является термом
λ - определение функции