-module(id_counter). -export([create_table/1, next_counter/1, dirty_next_counter/1]). -include("vbs_db_records.hrl"). %% Create the table structure for Mnesia create_table(Opts) -> mnesia:create_table(id_counter, Opts ++ [{attributes, record_info(fields, id_counter)}]). %% Get the next id for a given name next_counter(Name) -> Rec = case mnesia:read({id_counter, Name}) of [] -> #id_counter{name=Name, next_value=0}; [Val] -> Val end, NextRec = Rec#id_counter{next_value = Rec#id_counter.next_value+ 1}, ok = mnesia:write(NextRec), Rec#id_counter.next_value. %% Get the next id for a given name dirty_next_counter(Name) -> mnesia:dirty_update_counter(id_counter, Name, 1) - 1.