Documentation
¶
Index ¶
- Constants
- Variables
- type Bond
- type BondRepository
- type BondType
- type CashFlowItem
- type CashFlowRepository
- type CollectionBondRef
- type CollectionBondRefRepository
- type CreateAmortizationPaymentArgs
- type CreateBondArgs
- type CreateCouponPaymentArgs
- type CreateIssuerArgs
- type CreateMaturityPaymentArgs
- type CreateOfferArgs
- type CreatePaymentArgs
- type DB
- type Issuer
- type IssuerRepository
- type MarketData
- type MarketDataRepository
- type Offer
- type OfferRepository
- type OfferType
- type Option
- type Payment
- type PaymentListQuery
- type PaymentRepository
- type PaymentType
- type PutMarketDataArgs
- type Report
- type ReportRepository
- type SearchIndex
- type SearchRepository
- type TX
- type UpdateBondArgs
- type UpdateIssuerArgs
Constants ¶
const (
// DefaultDataSource содержит строку соединения с БД по умолчанию
DefaultDataSource = "postgres://postgres:postgres@localhost:5432/bond_recommender"
)
Variables ¶
var ( // ErrNotFound возвращается, если объект не был найден в БД ErrNotFound = errors.New("not found") // ErrAlreadyExists возвращается, если объект уже существует в БД ErrAlreadyExists = errors.New("already exists") )
Functions ¶
This section is empty.
Types ¶
type Bond ¶
type Bond struct { ID int `gorm:"column:id; primaryKey"` IssuerID int `gorm:"column:issuer_id"` MoexID int `gorm:"column:moex_id; unique"` SecurityID string `gorm:"column:security_id; unique"` ShortName string `gorm:"column:short_name"` FullName string `gorm:"column:full_name"` ISIN string `gorm:"column:isin"` IsTraded bool `gorm:"column:is_traded"` QualifiedOnly bool `gorm:"column:qualified_only"` IsHighRisk bool `gorm:"column:high_risk"` Type BondType `gorm:"column:type"` PrimaryBoardID string `gorm:"column:primary_board_id"` MarketPriceBoardID string `gorm:"column:market_price_board_id"` InitialFaceValue float64 `gorm:"column:initial_face_value"` FaceUnit string `gorm:"column:face_unit"` IssueDate sql.NullTime `gorm:"column:issue_date"` MaturityDate sql.NullTime `gorm:"column:maturity_date"` ListingLevel int `gorm:"column:listing_level"` CouponFrequency int `gorm:"column:coupon_freq"` CreatedAt time.Time `gorm:"column:created"` UpdatedAt time.Time `gorm:"column:updated"` Issuer Issuer Payments []Payment `gorm:"foreignKey:BondID"` }
Bond содержит данные облигаций
type BondRepository ¶
type BondRepository interface { // GetByID выполняет поиски облигации по полю Bond.ID // Если облигация не найдена, возвращается ошибка ErrNotFound GetByID(id int) (*Bond, error) // GetByMoexID выполняет поиски облигации по полю Bond.MoexID // Если облигация не найдена, возвращается ошибка ErrNotFound GetByMoexID(moexID int) (*Bond, error) // GetByISIN выполняет поиски облигации по полю Bond.ISIN // Если облигация не найдена, возвращается ошибка ErrNotFound GetByISIN(isin string) (*Bond, error) // GetBySecurityID выполняет поиски облигации по полю Bond.SecurityID // Если облигация не найдена, возвращается ошибка ErrNotFound GetBySecurityID(securityID string) (*Bond, error) // Create создает облигацию // Если облигация уже существует, то возвращается ErrAlreadyExists Create(args CreateBondArgs) (*Bond, error) // Update обновляет данные эмитента // Если эмитент не найден, возвращается ошибка ErrNotFound Update(id int, args UpdateBondArgs) (*Bond, error) // GetLastUpdateTime возвращает дату и время последней выгрузки данных GetLastUpdateTime() (*time.Time, error) }
BondRepository отвечает за управление записями в таблице облигаций
type BondType ¶
type BondType string
BondType содержит тип облигации
const ( // SubfederalBond - субфедеральные облигации SubfederalBond BondType = BondType(moex.SubfederalBond) // OFZBond - ОФЗ OFZBond BondType = BondType(moex.OFZBond) // ExchangeBond - биржевые облигации ExchangeBond BondType = BondType(moex.ExchangeBond) // CBBond - облигации ЦБ CBBond BondType = BondType(moex.CBBond) // MunicipalBond - мунициальные облигации MunicipalBond BondType = BondType(moex.MunicipalBond) // CorporateBond - корпоративные облигации CorporateBond BondType = BondType(moex.CorporateBond) // IFIBond - облигации МФО IFIBond BondType = BondType(moex.IFIBond) // EuroBond - еврооблигации EuroBond BondType = BondType(moex.EuroBond) )
type CashFlowItem ¶
type CashFlowItem struct { BondID int `gorm:"column:bond_id"` Type PaymentType `gorm:"column:type"` Date time.Time `gorm:"column:date"` ValueRub float64 `gorm:"column:value_rub"` }
CashFlowItem представляет запись в таблице текущих выплат
func (CashFlowItem) TableName ¶
func (CashFlowItem) TableName() string
TableName задает название таблицы
type CashFlowRepository ¶
type CashFlowRepository interface { // List возвращает полный список текущих выплат для облигации // Направление сортировки - по возрастанию даты List(id int) ([]*CashFlowItem, error) // Rebuild выполняет перерасчет текущих выплат для всех облигаций Rebuild() error }
CashFlowRepository отвечает за управление записями в таблице текущих выплат
type CollectionBondRef ¶
type CollectionBondRef struct { CollectionID string `gorm:"column:collection_id"` Duration int `gorm:"column:duration"` BondID int `gorm:"column:bond_id"` Order int `gorm:"column:order"` }
CollectionBondRef представляет запись в таблице связей "коллекция-облигация"
func (CollectionBondRef) TableName ¶
func (CollectionBondRef) TableName() string
TableName задает название таблицы
type CollectionBondRefRepository ¶
type CollectionBondRefRepository interface { // Rebuild выполняет перерасчет списка облигаций для отдельной коллекции Rebuild(collectionID string, duration int, filter string) error }
CollectionBondRefRepository отвечает за управление записями в таблице связей "коллекция-облигация"
type CreateAmortizationPaymentArgs ¶
type CreateAmortizationPaymentArgs struct {
CreatePaymentArgs
}
CreateAmortizationPaymentArgs содержит параметры для создания выплаты по амортизации
type CreateBondArgs ¶
type CreateBondArgs struct { IssuerID int MoexID int SecurityID string ShortName string FullName string ISIN string IsTraded bool QualifiedOnly bool IsHighRisk bool Type BondType PrimaryBoardID string MarketPriceBoardID string InitialFaceValue float64 FaceUnit string IssueDate sql.NullTime MaturityDate sql.NullTime ListingLevel int CouponFrequency int }
CreateBondArgs содержит данные для создания облигации
type CreateCouponPaymentArgs ¶
type CreateCouponPaymentArgs struct { CreatePaymentArgs RecordDate *time.Time StartDate *time.Time }
CreateCouponPaymentArgs содержит параметры для создания выплаты по купону
type CreateIssuerArgs ¶
CreateIssuerArgs содержит данные для создания эмитента
type CreateMaturityPaymentArgs ¶
type CreateMaturityPaymentArgs struct {
CreatePaymentArgs
}
CreateMaturityPaymentArgs содержит параметры для создания выплаты по погашению
type CreateOfferArgs ¶
type CreateOfferArgs struct { BondID int IssueValue *float64 Date sql.NullTime StartDate sql.NullTime EndDate sql.NullTime FaceValue *float64 FaceUnit string Price *float64 Value *float64 Agent *string Type *OfferType }
CreateOfferArgs содержит параметры для создания оферты
type CreatePaymentArgs ¶
type CreatePaymentArgs struct { BondID int Date time.Time Value float64 ValuePercent float64 ValueRub float64 }
CreatePaymentArgs содержит параметры для создания выплаты (общие для всех типов выплат)
type Issuer ¶
type Issuer struct { ID int `gorm:"column:id; primaryKey"` MoexID int `gorm:"column:moex_id; unique"` Name string `gorm:"column:name"` INN *string `gorm:"column:inn; unique"` OKPO *string `gorm:"column:okpo"` CreatedAt time.Time `gorm:"column:created"` UpdatedAt time.Time `gorm:"column:updated"` Bonds []Bond `gorm:"foreignKey:IssuerID"` }
Issuer содержит данные эмитента
type IssuerRepository ¶
type IssuerRepository interface { // GetByID выполняет поиски эмитента по полю Issuer.ID // Если эмитент не найден, возвращается ошибка ErrNotFound GetByID(id int) (*Issuer, error) // GetByMoexID выполняет поиски эмитента по полю Issuer.MoexID // Если эмитент не найден, возвращается ошибка ErrNotFound GetByMoexID(moexID int) (*Issuer, error) // GetByINN выполняет поиски эмитента по полю Issuer.INN // Если эмитент не найден, возвращается ошибка ErrNotFound GetByINN(inn string) (*Issuer, error) // Create создает эмитента // Если эмитент уже существует, то возвращается ErrAlreadyExists Create(args CreateIssuerArgs) (*Issuer, error) // Update обновляет данные эмитента // Если эмитент не найден, возвращается ошибка ErrNotFound // Если эмитент не найден, возвращается ошибка ErrNotFound Update(id int, args UpdateIssuerArgs) (*Issuer, error) }
IssuerRepository отвечает за управление записями в таблице эмитентов
type MarketData ¶
type MarketData struct { ID int `gorm:"column:id; primaryKey"` BondID int `gorm:"column:bond_id"` Time time.Time `gorm:"column:time"` FaceValue *float64 `gorm:"column:face_value"` Currency *string `gorm:"column:currency"` Last *float64 `gorm:"column:last"` LastChange *float64 `gorm:"column:last_change"` ClosePrice *float64 `gorm:"column:close_price"` LegalClosePrice *float64 `gorm:"column:legal_close_price"` AccruedInterest *float64 `gorm:"column:accrued_interest"` Bond Bond }
MarketData содержит последние рыночные данные по облигации
func (MarketData) TableName ¶
func (MarketData) TableName() string
TableName задает название таблицы
type MarketDataRepository ¶
type MarketDataRepository interface { // Get возвращает запись для указанной облигации // Если указанной записи не существует, то возвращается ошибка ErrNotFound Get(bondID int) (*MarketData, error) // Put записывает рыночные данные для указанной облигации // Если рыночные данные уже существуют, они обновляются Put(bondID int, args PutMarketDataArgs) (*MarketData, error) }
MarketDataRepository отвечает за управление записями в таблице рыночных данных
type Offer ¶
type Offer struct { ID int `gorm:"column:id; primaryKey"` BondID int `gorm:"column:bond_id"` IssueValue *float64 `gorm:"issue_value"` Date sql.NullTime `gorm:"date"` StartDate sql.NullTime `gorm:"start_date"` EndDate sql.NullTime `gorm:"end_date"` FaceValue *float64 `gorm:"face_value"` FaceUnit string `gorm:"face_unit"` Price *float64 `gorm:"column:price"` Value *float64 `gorm:"column:value"` Agent *string `gorm:"column:agent"` Type *OfferType `gorm:"column:type"` CreatedAt time.Time `gorm:"column:created"` UpdatedAt time.Time `gorm:"column:updated"` Bond Bond }
Offer содержит данные по офертам
type OfferRepository ¶
type OfferRepository interface { // Create создает новую выплату по оферте // Если указанная оферта уже существует, то возвращается ошибка ErrAlreadyExists Create(args CreateOfferArgs) (*Offer, error) }
OfferRepository отвечает за управление записями в таблице оферт
type OfferType ¶
type OfferType string
OfferType содержит тип оферты
const ( // GenericOffer - оферта GenericOffer OfferType = "offer" // CompletedGenericOffer - состоявшаяся оферта CompletedGenericOffer OfferType = "completed_offer" // CanceledGenericOffer - отмененнная оферта CanceledGenericOffer OfferType = "canceled_offer" // DefaultGenericOffer - дефолт оферты DefaultGenericOffer OfferType = "default_offer" // TechDefaultGenericOffer - технический дефолт оферты TechDefaultGenericOffer OfferType = "tech_default_offer" // MaturityOffer - оферта-погашение MaturityOffer OfferType = "maturity" // CanceledMaturityOffer - отмененнная оферта-погашение CanceledMaturityOffer OfferType = "canceled_maturity" )
type Option ¶
type Option func(c *dbContextConfig) error
Option конфигурирует контекст БД
func WithDataSource ¶
WithDataSource задает строку соединения с БД
type Payment ¶
type Payment struct { ID int `gorm:"column:id; primaryKey"` BondID int `gorm:"column:bond_id"` Type PaymentType `gorm:"column:type"` Date time.Time `gorm:"column:date"` Value float64 `gorm:"column:value"` ValuePercent float64 `gorm:"column:value_percent"` ValueRub float64 `gorm:"column:value_rub"` CouponRecordDate sql.NullTime `gorm:"column:coupon_record_date"` CouponStartDate sql.NullTime `gorm:"column:coupon_start_date"` CreatedAt time.Time `gorm:"column:created"` UpdatedAt time.Time `gorm:"column:updated"` Bond Bond }
Payment содержит данные по выплатам (погашения, купоны, амортизации)
type PaymentListQuery ¶
type PaymentListQuery struct { BondID int Types []PaymentType Since *time.Time }
PaymentListQuery содержит параметры запроса списка выплат
type PaymentRepository ¶
type PaymentRepository interface { // List возвращает полный список выплат, удовлетворяющих фильтру // Направление сортировки - по возрастанию даты List(query PaymentListQuery) ([]*Payment, error) // Get возвращает выплату по ее параметрам // Если указанной выплаты не существует, то возвращается ошибка ErrNotFound Get(bondID int, date time.Time, paymentType PaymentType) (*Payment, error) // CreateCoupon создает новую выплату по купону // Если указанная выплата уже существует, то возвращается ошибка ErrAlreadyExists CreateCoupon(args CreateCouponPaymentArgs) (*Payment, error) // CreateAmortization создает новую выплату по амортизации // Если указанная выплата уже существует, то возвращается ошибка ErrAlreadyExists CreateAmortization(args CreateAmortizationPaymentArgs) (*Payment, error) // CreateMaturity создает новую выплату по погашению // Если указанная выплата уже существует, то возвращается ошибка ErrAlreadyExists CreateMaturity(args CreateMaturityPaymentArgs) (*Payment, error) // Last возвращает последнюю выгруженную выплату указанного типа // Если выплат указанного типа не существует, то возвращается ошибка ErrNotFound Last(t PaymentType) (*Payment, error) }
PaymentRepository отвечает за управление записями в таблице выплат
type PaymentType ¶
type PaymentType string
PaymentType содерижт тип выплаты
const ( MaturityPayment PaymentType = "M" CouponPayment PaymentType = "C" AmortizationPayment PaymentType = "A" )
type PutMarketDataArgs ¶
type PutMarketDataArgs struct { Time time.Time FaceValue *float64 Currency *string Last *float64 LastChange *float64 ClosePrice *float64 LegalClosePrice *float64 AccruedInterest *float64 }
PutMarketDataArgs содержит параметры для записи рыночных данных
type Report ¶
type Report struct { Bond Bond `gorm:"embedded;embeddedPrefix:bond_"` Issuer Issuer `gorm:"embedded;embeddedPrefix:issuer_"` MarketData MarketData `gorm:"embedded;embeddedPrefix:marketdata_"` DaysTillMaturity int `gorm:"column:days_till_maturity"` Currency string `gorm:"column:currency"` OpenPrice float64 `gorm:"column:open_price"` OpenAccruedInterest float64 `gorm:"column:open_accrued_interest"` OpenFaceValue float64 `gorm:"column:open_face_value"` OpenFee float64 `gorm:"column:open_fee"` OpenValue float64 `gorm:"column:open_value"` CouponPayments float64 `gorm:"column:coupon_payments"` AmortizationPayments float64 `gorm:"column:amortization_payments"` MaturityPayment float64 `gorm:"column:maturity_payments"` Taxes float64 `gorm:"column:taxes"` Revenue float64 `gorm:"column:revenue"` ProfitLoss float64 `gorm:"column:profit_loss"` RelativeProfitLoss float64 `gorm:"column:relative_profit_loss"` InterestRate float64 `gorm:"column:interest_rate"` }
Report содержит данные отчета по облигации
type ReportRepository ¶
type ReportRepository interface { // Get возвращает отчет по облигации // Если данные по указанной облигации не найдены, то возвращается ErrNotFound Get(id int) (*Report, error) // List возвращает отчеты по облигациям, которые удовлетворяют указанному подзапросу List(limit int, filter string, values ...interface{}) ([]*Report, error) // Rebuild выполняет перерасчет отчетов по облигациям Rebuild() error }
ReportRepository отвечает за управление записями в таблице отчетов по облигациям
type SearchIndex ¶
type SearchIndex struct { ID int `gorm:"column:id; primaryKey"` BondID int `gorm:"column:bond_id"` Vector string `gorm:"column:vector; type:tsvector"` }
SearchIndex содержит данные для поиска облигаций
func (SearchIndex) TableName ¶
func (SearchIndex) TableName() string
TableName задает название таблицы
type SearchRepository ¶
type SearchRepository interface { // Exec выполняет поиск по поисковому индексу Exec(filter string, skip, limit int) (bonds []*Bond, totalCount int, err error) // Rebuild выполняет пересборку поискового индекса Rebuild() error }
SearchRepository предоставляет доступ к данным поискового индекса
type TX ¶
type TX struct { Issuers IssuerRepository Bonds BondRepository Payments PaymentRepository Offers OfferRepository MarketData MarketDataRepository Search SearchRepository CashFlow CashFlowRepository Reports ReportRepository CollectionBondReferences CollectionBondRefRepository // contains filtered or unexported fields }
TX представляет транзакцию БД
type UpdateBondArgs ¶
type UpdateBondArgs struct { IsTraded bool QualifiedOnly bool PrimaryBoardID string MarketPriceBoardID string IssueDate sql.NullTime MaturityDate sql.NullTime }
UpdateBondArgs содержит данные для создания облигации
type UpdateIssuerArgs ¶
UpdateIssuerArgs содержит данные для обновления эмитента