db

package module
v0.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 12, 2023 License: MIT Imports: 5 Imported by: 0

README

moneymemo

テーブルの草案

UnkoDBで作る

ストレージ・メタ情報 (storage)

ストレージとは財布内現金や銀行口座やポイント口座・プリペイドなど
ストレージは99個まで登録可能とする

カラム名 カラムタイプ 備考
id Counter キー。storage_id
name ShortString ストレージ名
note_id Uint32 備考テキスト(備考がない場合は0)
ストレージ・年間 (storage_yearly_change)

ストレージの収支の年間の記録
キーはParseUint(Sprintf("%4d000000000%2d000", year, storage_id), 10, 64)

カラム名 カラムタイプ 備考
id Uint64 キー
storage_id Uint32 ストレージのID
decrease Uint64 減少トータル
increase Uint64 増加トータル
ストレージ・月間 (storage_monthly_change)

ストレージの収支の月間の記録
キーはParseUint(Sprintf("%4d%2d0000000%2d000", year, month, storage_id), 10, 64)

カラム名 カラムタイプ 備考
id Uint64 キー
storage_id Uint32 ストレージのID
decrease Uint64 減少トータル
increase Uint64 増加トータル
ストレージ・詳細 (storage_change)

キーはevent_id + (storage_id * 10)

カラム名 カラムタイプ 備考
id Uint64 キー
storage_id Uint32 ストレージのID
decrease Uint64 減少トータル
increase Uint64 増加トータル
イベント・支払い (pay_event)

基本的には支払い全般(買い物・サービス料・チケット料・権利料・公共料金・税金など)

キーはevent_id
event_idParseUint(Sprintf("%4d%2d%2d%2d%2d%d%2d00%d", year, month, day, hour, minute, has_time, duplicate, event_type), 10, 64)
event_type1
has_timeは日時の時の有無 (有=1, 無=0)
duplicateは日時の同じ支払いイベントが他にある場合に重複を防ぐためにユニークになるよう値をつける

カラム名 カラムタイプ 備考
id Uint64 キー
summary ShortString 支払いの概要
place_id Uint32 支払いの場所のID
note_id Uint32 備考テキストのID(備考がない場合は0)
item_count Uint16 詳細(品目)の数
イベント・収入 (earn_event)

基本的には収入のみのイベント全般(おこづかい・お年玉・報酬・当選金・売却など)

キーはevent_id
event_idParseUint(Sprintf("%4d%2d%2d%2d%2d%d%2d00%d", year, month, day, hour, minute, has_time, duplicate, event_type), 10, 64)
event_type2
has_timeは日時の時の有無 (有=1, 無=0)
duplicateは日時の同じ収入イベントが他にある場合に重複を防ぐためにユニークになるよう値をつける

カラム名 カラムタイプ 備考
id Uint64 キー
summary ShortString 収入の概要
source_id Uint32 お金を出した人のID
note_id Uint32 備考テキストのID(備考がない場合は0)
item_count Uint16 詳細(品目)の数
イベント・移動 (exchange_event)

ストレージ間の移動(財布現金と銀行口座の入出、ポイントから財布現金に交換、電子マネーへチャージ、など)
※手数料等も込みで・・・やるか?

キーはevent_id
event_idParseUint(Sprintf("%4d%2d%2d%2d%2d%d%2d00%d", year, month, day, hour, minute, has_time, duplicate, event_type), 10, 64)
event_type3
has_timeは日時の時の有無 (有=1, 無=0)
duplicateは日時の同じ収入イベントが他にある場合に重複を防ぐためにユニークになるよう値をつける

カラム名 カラムタイプ 備考
id Uint64 キー
summary ShortString 移動の概要
note_id Uint32 備考テキストのID(備考がない場合は0)
イベント・消失 (lost_event)

お金の紛失、ポイント失効、など

キーはevent_id
event_idParseUint(Sprintf("%4d%2d%2d%2d%2d%d%2d00%d", year, month, day, hour, minute, has_time, duplicate, event_type), 10, 64)
event_type4
has_timeは日時の時の有無 (有=1, 無=0)
duplicateは日時の同じ収入イベントが他にある場合に重複を防ぐためにユニークになるよう値をつける

カラム名 カラムタイプ 備考
id Uint64 キー
summary ShortString 消失の概要
note_id Uint32 備考テキストのID(備考がない場合は0)
イベント・借金 (debt_event)

借金(借入や返済)を扱う
借入か返済かはストレージの増減で判定する

キーはevent_id
event_idParseUint(Sprintf("%4d%2d%2d%2d%2d%d%2d00%d", year, month, day, hour, minute, has_time, duplicate, event_type), 10, 64)
event_type5
has_timeは日時の時の有無 (有=1, 無=0)
duplicateは日時の同じ収入イベントが他にある場合に重複を防ぐためにユニークになるよう値をつける

カラム名 カラムタイプ 備考
id Uint64 キー
summary ShortString 借金の概要
lender_id Uint32 貸主のID
note_id Uint32 備考テキストのID(備考がない場合は0)
備考テキスト (note)

備考テキストを保持

カラム名 カラムタイプ 備考
id Counter キー
text LongString 備考テキスト
詳細・支払い (pay_item)

支払いにおける品目など
具体的には
商品代金内訳、サービス代金、教材費、交通費、公共料金、税金、など?
品目はイベントごとに999個まで

キーは(event_id - event_type) + item_number
event_idは支払いイベントのキー
event_type1
item_numberは各イベント内で品目ごとにユニークになるように番号をつける(1から順につけるなど)

タグは目的や種別の情報(例えば、目的は学費とか交際費とか嗜好品とか、種別は食べ物とか筆記用具とか本とか)

カラム名 カラムタイプ 備考
id Uint64 キー
name ShortString 品目名
value Uint64 金額
tax Uint8 内税は税率+100、外税は税率、 金額=税額なら100、税なしなら0
tags FixedSizeShortBytes[8] タグのID (タグは8個まで)
note_id Uint32 備考テキストのID(備考がない場合は0)
詳細・収入 (earn_item)

例えば売却時の売れたもののそれぞれの金額や、一度に複数当選した当選金の内訳とか
品目はイベントごとに999個まで
所得税などは支払いイベントのほうで記録する

キーは(event_id - event_type) + item_number
event_idは収入イベントのキー
event_type2
item_numberは各イベント内で品目ごとにユニークになるように番号をつける(1から順につけるなど)

タグは品目の種別など(本とかゲームとか宝くじとか)

カラム名 カラムタイプ 備考
id Uint64 キー
name ShortString 品目名
value Uint64 金額
tags FixedSizeShortBytes[8] タグのID (タグは8個まで)
note_id Uint32 備考テキストのID(備考がない場合は0)
タグ (tag)

支払いや収入の詳細で使う
目的や種別を登録する
タグは255種類まで

カラム名 カラムタイプ 備考
id Counter キー。tag_id
name ShortString タグ名
note_id Uint32 備考テキストのID(備考がない場合は0)
場所 (place)

支払いにおける場所
コンビニとか書店とかの店舗名など

カラム名 カラムタイプ 備考
id Counter キー。place_id
name ShortString 場所名
note_id Uint32 備考テキストのID(備考がない場合は0)
源泉 (earn_source)

収入においてお金を出した人・組織

カラム名 カラムタイプ 備考
id Counter キー。source_id
name ShortString お金を出した人・組織の名前
note_id Uint32 備考テキストのID(備考がない場合は0)
貸主 (lender)

借金・返済においての貸主

カラム名 カラムタイプ 備考
id Counter キー。lender_id
name ShortString 貸主の人・組織の名前
note_id Uint32 備考テキストのID(備考がない場合は0)

Documentation

Index

Constants

View Source
const TableAppMeta = "app_meta"
View Source
const TableDebtEvent = "debt_event"
View Source
const TableEarnEvent = "earn_event"
View Source
const TableEarnItem = "earn_item"
View Source
const TableEarnSource = "earn_source"
View Source
const TableExchangeEvent = "exchange_event"
View Source
const TableLender = "lender"
View Source
const TableLostEvent = "lost_event"
View Source
const TableNote = "note"
View Source
const TablePayEvent = "pay_event"
View Source
const TablePayItem = "pay_item"
View Source
const TablePlace = "place"
View Source
const TableStorage = "storage"
View Source
const TableStorageChange = "storage_change"
View Source
const TableStorageMonthlyChange = "storage_monthly_change"
View Source
const TableStorageYearlyChange = "storage_yearly_change"
View Source
const TableTag = "tag"

Variables

This section is empty.

Functions

func Bug

func Bug(f string, args ...any) error

func CloseDB

func CloseDB()

func InitDB

func InitDB() (err error)

func LoadDB

func LoadDB() (err error)

func MakeNewDB

func MakeNewDB() (err error)

func SetLogger

func SetLogger(newLogger Logger)

Types

type AppMeta

type AppMeta struct {
	Id   string `unkodb:"id,key@ShortString"`
	Data string `unkodb:"data,LongString"`
}

type DB

type DB struct {
	// contains filtered or unexported fields
}

type DebtEvent

type DebtEvent struct {
	Id       uint64 `unkodb:"id,key@Uint64"`
	Summary  string `unkodb:"summary,ShortString"`
	LenderId uint32 `unkodb:"lender_id,Uint32"`
	NoteId   uint32 `unkodb:"note_id,Uint32"`
}

type EarnEvent

type EarnEvent struct {
	Id        uint64 `unkodb:"id,key@Uint64"`
	Summary   string `unkodb:"summary,ShortString"`
	SourceId  uint32 `unkodb:"source_id,Uint32"`
	NoteId    uint32 `unkodb:"note_id,Uint32"`
	ItemCount uint16 `unkodb:"item_count,Uint16"`
}

type EarnItem

type EarnItem struct {
	Id     uint64 `unkodb:"id,key@Uint64"`
	Name   string `unkodb:"name,ShortString"`
	Value  uint64 `unkodb:"value,Uint64"`
	Tags   []byte `unkodb:"tags,FixedSizeShortBytes[8]"`
	NoteId uint32 `unkodb:"note_id,Uint32"`
}

type EarnSource

type EarnSource struct {
	Id     uint32 `unkodb:"id,key@Counter"`
	Name   string `unkodb:"name,ShortString"`
	NoteId uint32 `unkodb:"note_id,Uint32"`
}

type ExchangeEvent

type ExchangeEvent struct {
	Id      uint64 `unkodb:"id,key@Uint64"`
	Summary string `unkodb:"summary,ShortString"`
	NoteId  uint32 `unkodb:"note_id,Uint32"`
}

type Lender

type Lender struct {
	Id     uint32 `unkodb:"id,key@Counter"`
	Name   string `unkodb:"name,ShortString"`
	NoteId uint32 `unkodb:"note_id,Uint32"`
}

type Logger

type Logger interface {
	D(args ...any)
	E(src any, args ...any)
	I(args ...any)
}

type LostEvent

type LostEvent struct {
	Id      uint64 `unkodb:"id,key@Uint64"`
	Summary string `unkodb:"summary,ShortString"`
	NoteId  uint32 `unkodb:"note_id,Uint32"`
}

type Note

type Note struct {
	Id   uint32 `unkodb:"id,key@Counter"`
	Text string `unkodb:"text,LongString"`
}

type PayEvent

type PayEvent struct {
	Id        uint64 `unkodb:"id,key@Uint64"`
	Summary   string `unkodb:"summary,ShortString"`
	PlaceId   uint32 `unkodb:"place_id,Uint32"`
	NoteId    uint32 `unkodb:"note_id,Uint32"`
	ItemCount uint16 `unkodb:"item_count,Uint16"`
}

type PayItem

type PayItem struct {
	Id     uint64 `unkodb:"id,key@Uint64"`
	Name   string `unkodb:"name,ShortString"`
	Value  uint64 `unkodb:"value,Uint64"`
	Tax    uint8  `unkodb:"tax,Uint8"`
	Tags   []byte `unkodb:"tags,FixedSizeShortBytes[8]"`
	NoteId uint32 `unkodb:"note_id,Uint32"`
}

type Place

type Place struct {
	Id     uint32 `unkodb:"id,key@Counter"`
	Name   string `unkodb:"name,ShortString"`
	NoteId uint32 `unkodb:"note_id,Uint32"`
}

type Storage

type Storage struct {
	Id     uint32 `unkodb:"id,key@Counter"`
	Name   string `unkodb:"name,ShortString"`
	NoteId uint32 `unkodb:"note_id,Uint32"`
}

type StorageChange

type StorageChange struct {
	Id        uint64 `unkodb:"id,key@Uint64"`
	StorageId uint32 `unkodb:"storage_id,Uint32"`
	Decrease  uint64 `unkodb:"decrease,Uint64"`
	Increase  uint64 `unkodb:"increase,Uint64"`
}

type StorageMonthlyChange

type StorageMonthlyChange struct {
	Id        uint64 `unkodb:"id,key@Uint64"`
	StorageId uint32 `unkodb:"storage_id,Uint32"`
	Decrease  uint64 `unkodb:"decrease,Uint64"`
	Increase  uint64 `unkodb:"increase,Uint64"`
}

type StorageYearlyChange

type StorageYearlyChange struct {
	Id        uint64 `unkodb:"id,key@Uint64"`
	StorageId uint32 `unkodb:"storage_id,Uint32"`
	Decrease  uint64 `unkodb:"decrease,Uint64"`
	Increase  uint64 `unkodb:"increase,Uint64"`
}

type Tag

type Tag struct {
	Id     uint32 `unkodb:"id,key@Counter"`
	Name   string `unkodb:"name,ShortString"`
	NoteId uint32 `unkodb:"note_id,Uint32"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL