8000 Write the type codes once, and split the formatting of values into functions of their own by dominion525 · Pull Request #133 · dominion525/jetdb · GitHub
[go: up one dir, main page]

Skip to content

Write the type codes once, and split the formatting of values into functions of their own - #133

Merged
dominion525 merged 5 commits into
mainfrom
refactor/value-formats
Oct 25, 2026
Merged

dominion525 merged 5 commits into
mainfrom
refactor/value-formats

Conversation

@dominion525
Copy link
Copy Markdown
Owner

Summary

  • The bytes of the column types were written twice, in ColumnType::to_byte and in TryFrom<u8>. TryFrom<u8> now finds the type in ColumnType::KNOWN by to_byte, and a test with a match over every column type fails to compile when a type is added and not placed in KNOWN. TryFrom<i32> of ObjectType finds the type in ObjectType::ALL by its discriminant, so the numbers are written only in the enum. fixed_size has the types of the same size in one arm.
  • format_timestamp reads a directive in a function of its own and writes the parts into the string, rather than make a string for each part. numeric_to_string puts the sign in one place.
  • find_link of complex.rs finds its columns with table::column_index and reads a row with ComplexLink::of. write_csv chooses the columns, writes the header and reads the complex columns in functions of their own, and the fields of Yes/No, binary and Date/Time values and the items of attachments are functions of their own.
  • What the functions give is unchanged. Finding a type in a list of 17 or 13 rather than with a match happens once for each column definition or catalog row read.
  • Functions above the thresholds: 100 → 91. Tests: 1114 → 1115. format_value of csv.rs is still above them (CC 14), as a match over the fifteen kinds of Value, and ColumnType::to_byte is kept as the match that gives the bytes.
Function Before (CC / Cog / SLOC) After, the function of the largest CC
format ColumnType::try_from 19 / 1 / 22 2 / 0 / 6
format ColumnType::fixed_size 19 / 1 / 22 9 / 1 / 12
format ObjectType::try_from 15 / 1 / 18 2 / 0 / 6
timestamp format_timestamp 12 / 7 / 26 9 / 1 / 19
money numeric_to_string 7 / 11 / 34 5 / 6 / 29
complex find_link 14 / 0 / 34 7 / 0 / 24
complex decode_attachment 11 / 1 / 15 9 / 1 / 11
csv write_csv 13 / 3 / 39 9 / 2 / 30
csv complex_field 10 / 6 / 28 6 / 3 / 20
csv format_value 20 / 16 / 42 14 / 1 / 17

🤖 Generated with Claude Code

dominion525 and others added 5 commits October 25, 2026 20:01
…es once

- Find the column type of a byte in KNOWN by to_byte, which is now the only place that gives the bytes, rather than in a second match of them
- Find the object type of a number in ObjectType::ALL by its discriminant
- Put the column types of the same fixed size in one arm of fixed_size
- Test that KNOWN holds every column type, with a match that fails to compile when a type is added

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…g into the string

- Push what a directive gives in push_directive, which writes into the string rather than push a string made for each part

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- Make the digits first, and then put the sign before them in one place rather than in both branches

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…tion of its own

- Find the columns with column_index, and read the IDs of a row with link_id and ComplexLink::of
- Read the 32-bit numbers of an attachment with a function rather than a closure

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…rite

- Choose the columns, write the header and read the complex columns in functions of their own
- Write the fields of Yes/No, binary and Date/Time values, and the items of attachments, in functions of their own

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

Coverage

For 7ab87d2.

Filename                       Regions    Missed Regions     Cover   Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
jetdb-cli/src/export.rs            108                11    89.81%           5                 0   100.00%          66                 6    90.91%           0                 0         -
jetdb-cli/src/form.rs              254                24    90.55%          19                 5    73.68%         152                 9    94.08%           0                 0         -
jetdb-cli/src/macro_cmd.rs         151                11    92.72%          11                 2    81.82%          81                 5    93.83%           0                 0         -
jetdb-cli/src/main.rs              864                38    95.60%          70                 2    97.14%         549                25    95.45%           0                 0         -
jetdb-cli/src/prop.rs              308                15    95.13%          33                 2    93.94%         186                10    94.62%           0                 0         -
jetdb-cli/src/query.rs              80                 4    95.00%           5                 0   100.00%          51                 1    98.04%           0                 0         -
jetdb-cli/src/vba.rs                74                 4    94.59%           5                 0   100.00%          47                 1    97.87%           0                 0         -
jetdb-wasm/src/lib.rs             3871                95    97.55%         252                 4    98.41%        2031                22    98.92%           0                 0         -
jetdb/src/catalog.rs               509                14    97.25%          46                 0   100.00%         299                 3    99.00%           0                 0         -
jetdb/src/complex.rs               924                32    96.54%          73                 0   100.00%         605                15    97.52%           0                 0         -
jetdb/src/crypto.rs               2300               112    95.13%         127                10    92.13%        1315                60    95.44%           0                 0         -
jetdb/src/csv.rs                   857                24    97.20%          72                 0   100.00%         486                 6    98.77%           0                 0         -
jetdb/src/data.rs                 4560               179    96.07%         257                 3    98.83%        2564               110    95.71%           0                 0         -
jetdb/src/ddl/access.rs             70                 0   100.00%           7                 0   100.00%          46                 0   100.00%           0                 0         -
jetdb/src/ddl/mod.rs              2777                 8    99.71%         199                 2    98.99%        1503                 6    99.60%           0                 0         -
jetdb/src/ddl/mysql.rs              70                 0   100.00%           7                 0   100.00%          46                 0   100.00%           0                 0         -
jetdb/src/ddl/postgres.rs           71                 0   100.00%           7                 0   100.00%          46                 0   100.00%           0                 0         -
jetdb/src/ddl/sqlite.rs             69                 0   100.00%           7                 0   100.00%          48                 0   100.00%           0                 0         -
jetdb/src/encoding.rs              284                 0   100.00%          30                 0   100.00%         153                 0   100.00%           0                 0         -
jetdb/src/file.rs                 1914                67    96.50%         110                 0   100.00%        1042                26    97.50%           0                 0         -
jetdb/src/form.rs                 3225               150    95.35%         230                10    95.65%        1752                69    96.06%           0                 0         -
jetdb/src/form2000.rs              762                21    97.24%          56                 1    98.21%         402                 4    99.00%           0                 0         -
jetdb/src/format.rs                616                 2    99.68%          45                 0   100.00%         388                 2    99.48%           0                 0         -
jetdb/src/lib.rs                     3                 0   100.00%           1                 0   100.00%           3                 0   100.00%           0                 0         -
jetdb/src/macro_action.rs          299                19    93.65%          27                 3    88.89%         165                24    85.45%           0                 0         -
jetdb/src/macro_def.rs            2350                98    95.83%         179                 9    94.97%        1522                46    96.98%           0                 0         -
jetdb/src/macro_text.rs            783                24    96.93%          49                 2    95.92%         437                20    95.42%           0                 0         -
jetdb/src/map.rs                   416                13    96.88%          27                 0   100.00%         221                 5    97.74%           0                 0         -
jetdb/src/money.rs                 281                 0   100.00%          26                 0   100.00%         186                 0   100.00%           0                 0         -
jetdb/src/prop.rs                 1398                56    95.99%          88                 8    90.91%         735                63    91.43%           0                 0         -
jetdb/src/query.rs                2587                71    97.26%         188                 1    99.47%        1625                35    97.85%           0                 0         -
jetdb/src/relationship.rs          249                26    89.56%          22                 0   100.00%         177                10    94.35%           0                 0         -
jetdb/src/save_as_text.rs          574                27    95.30%          52                 3    94.23%         341                27    92.08%           0                 0         -
jetdb/src/storage.rs               712                31    95.65%          48                 0   100.00%         386                 6    98.45%           0                 0         -
jetdb/src/table.rs                1632                61    96.26%         100                 2    98.00%         965                18    98.13%           0                 0         -
jetdb/src/timestamp.rs             405                 0   100.00%          44                 0   100.00%         235                 0   100.00%           0                 0         -
jetdb/src/vba.rs                   634                65    89.75%          54                16    70.37%         361                60    83.38%           0                 0         -
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                            37041              1302    96.48%        2578                85    96.70%       21217               694    96.73%           0                 0         -

@dominion525
dominion525 merged commit 5dda7c1 into main Oct 25, 2026
11 checks passed
@dominion525
dominion525 deleted the refactor/value-formats branch October 25, 2026 11:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

0