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

Function write_metadata_tables

internal/cbm/sqlite_writer.c:1849–1888  ·  view source on GitHub ↗

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

Source from the content-addressed store, hash-verified

1847
1848/* Phase 2: Write metadata tables (projects, file_hashes, summaries, sqlite_sequence). */
1849static void write_metadata_tables(write_db_ctx_t *w, uint32_t *projects_root,
1850 uint32_t *file_hashes_root, uint32_t *summaries_root,
1851 uint32_t *sqlite_seq_root) {
1852 int proj_rec_len;
1853 uint8_t *proj_rec =
1854 build_project_record(w->project, w->indexed_at, w->root_path, &proj_rec_len);
1855 const uint8_t *proj_recs[] = {proj_rec};
1856 int proj_lens[] = {proj_rec_len};
1857 int64_t proj_rowids[] = {FIRST_ROWID};
1858 *projects_root =
1859 write_table_btree(w->fp, &w->next_page, proj_recs, proj_lens, proj_rowids, SKIP_ONE, false);
1860 free(proj_rec);
1861
1862 *file_hashes_root = write_table_btree(w->fp, &w->next_page, NULL, NULL, NULL, 0, false);
1863 *summaries_root = write_table_btree(w->fp, &w->next_page, NULL, NULL, NULL, 0, false);
1864
1865 RecordBuilder r1;
1866 RecordBuilder r2;
1867 rec_init(&r1);
1868 rec_add_text(&r1, "nodes");
1869 rec_add_int(&r1, w->node_count > 0 ? w->nodes[w->node_count - SKIP_ONE].id : 0);
1870 int seq1_len;
1871 uint8_t *seq1 = rec_finalize(&r1, &seq1_len);
1872 rec_free(&r1);
1873
1874 rec_init(&r2);
1875 rec_add_text(&r2, "edges");
1876 rec_add_int(&r2, w->edge_count > 0 ? w->edges[w->edge_count - SKIP_ONE].id : 0);
1877 int seq2_len;
1878 uint8_t *seq2 = rec_finalize(&r2, &seq2_len);
1879 rec_free(&r2);
1880
1881 const uint8_t *seq_recs[] = {seq1, seq2};
1882 int seq_lens[] = {seq1_len, seq2_len};
1883 int64_t seq_rowids[] = {FIRST_ROWID, FIRST_DATA_PAGE};
1884 *sqlite_seq_root =
1885 write_table_btree(w->fp, &w->next_page, seq_recs, seq_lens, seq_rowids, PAIR_LEN, false);
1886 free(seq1);
1887 free(seq2);
1888}
1889
1890/* Write the SQLite file header on page 1 with master entries. */
1891static 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