MCPcopy Create free account
hub / github.com/DeusData/codebase-memory-mcp / write_metadata_tables

Function write_metadata_tables

internal/cbm/sqlite_writer.c:1772–1811  ·  view source on GitHub ↗

Phase 2: Write metadata tables (projects, file_hashes, summaries, sqlite_sequence). */

Source from the content-addressed store, hash-verified

1770
1771/* Phase 2: Write metadata tables (projects, file_hashes, summaries, sqlite_sequence). */
1772static void write_metadata_tables(write_db_ctx_t *w, uint32_t *projects_root,
1773 uint32_t *file_hashes_root, uint32_t *summaries_root,
1774 uint32_t *sqlite_seq_root) {
1775 int proj_rec_len;
1776 uint8_t *proj_rec =
1777 build_project_record(w->project, w->indexed_at, w->root_path, &proj_rec_len);
1778 const uint8_t *proj_recs[] = {proj_rec};
1779 int proj_lens[] = {proj_rec_len};
1780 int64_t proj_rowids[] = {FIRST_ROWID};
1781 *projects_root =
1782 write_table_btree(w->fp, &w->next_page, proj_recs, proj_lens, proj_rowids, SKIP_ONE, false);
1783 free(proj_rec);
1784
1785 *file_hashes_root = write_table_btree(w->fp, &w->next_page, NULL, NULL, NULL, 0, false);
1786 *summaries_root = write_table_btree(w->fp, &w->next_page, NULL, NULL, NULL, 0, false);
1787
1788 RecordBuilder r1;
1789 RecordBuilder r2;
1790 rec_init(&r1);
1791 rec_add_text(&r1, "nodes");
1792 rec_add_int(&r1, w->node_count > 0 ? w->nodes[w->node_count - SKIP_ONE].id : 0);
1793 int seq1_len;
1794 uint8_t *seq1 = rec_finalize(&r1, &seq1_len);
1795 rec_free(&r1);
1796
1797 rec_init(&r2);
1798 rec_add_text(&r2, "edges");
1799 rec_add_int(&r2, w->edge_count > 0 ? w->edges[w->edge_count - SKIP_ONE].id : 0);
1800 int seq2_len;
1801 uint8_t *seq2 = rec_finalize(&r2, &seq2_len);
1802 rec_free(&r2);
1803
1804 const uint8_t *seq_recs[] = {seq1, seq2};
1805 int seq_lens[] = {seq1_len, seq2_len};
1806 int64_t seq_rowids[] = {FIRST_ROWID, FIRST_DATA_PAGE};
1807 *sqlite_seq_root =
1808 write_table_btree(w->fp, &w->next_page, seq_recs, seq_lens, seq_rowids, PAIR_LEN, false);
1809 free(seq1);
1810 free(seq2);
1811}
1812
1813/* Write the SQLite file header on page 1 with master entries. */
1814static void write_sqlite_file_header(uint8_t *page1, uint32_t total_pages) {

Callers 1

write_db_after_nodesFunction · 0.85

Calls 7

build_project_recordFunction · 0.85
write_table_btreeFunction · 0.85
rec_initFunction · 0.85
rec_add_textFunction · 0.85
rec_add_intFunction · 0.85
rec_finalizeFunction · 0.85
rec_freeFunction · 0.85

Tested by

no test coverage detected